Unity3D学习之如何利用C#实现代理模式

Unity通过代理访问Assetstore 公司是通过代理上网,Unity3D asset store 能通过网页访问,,但在U3D编辑器里面,访问Asset Store会提示 无法打开。 查了很多资料,基本上 没有找到有价值了, 通过尝试,可以解决这个问题,, 方法如下: 在Windows上是通过代理来上网的,虽然代理在IE里面已经设置了,但是我们的Unity编辑器并不会去探测这个设置,相反,它会去探测windows环境变 阅读详情

  欢迎来到unity学习、unity培训、unity企业培训教育专区,这里有很多U3D资源、U3D培训视频、U3D教程、U3D常见问题、U3D项目源码,我们致力于打造业内unity3d培训、学习第一品牌。 

       C#语言是支持代理的,并且代理是非常的好用的一种方式。简单的来说就是 你委托朋友帮你做一件事情,当你的朋友做完以后会告诉你。 代码中一般A、B、C、D若干类同时委托E类来做一件事情,当这件事情E类完成时会同时回调A、B、C、D类中的方法,大概就是这个意思拉。 

回到Unity3D中,我们写一个简单的例子,Test.cs委托Log.cs 办一件事情,当Log.cs办完后在Test.cs回调委托的方法。代码比较简单我们直接将Test.cs Log.cs 绑在摄像机上,运行就能看到效果。。上代码!!! 

 

Log.cs 

 

1. using UnityEngine; 

2. using System.Collections; 

3. public class Log :MonoBehaviour 

4. { 

5. public delegate void DoOnething(string str); 

6. public static event DoOnething doOne; 

7. public delegate void DoTwothing(string str); 

8. public static event DoTwothing doTwo; 

9. void Start () 

10. { 

11. if(doOne != null) 

12. { 

13. doOne("狗刨"); 

14. } 

15. if(doTwo != null) 

16. { 

17. doTwo("狗刨学习网"); 

18. } 

19. } 

20. } 

 

 

 

        我解释一下。委托的标识符就是delegate ,上述代码的DoOnething(string str) DoTwothing(string str)就是委托完毕后回调的方法名称,doOne doTwo这两个是委托的事件,在Start方法中通过委托的事件将委托的参数传递进去即可实现委托。在开发中应该有一个专门用来委托的类,在DoOne DoTwo方法之上应该执行对应对托的相关代码。不一定是在Start方法中,静态调用对象皆可,文章出处【狗刨学习网】。 

 

接着再看看Test.cs 

 

1. using UnityEngine; 

2. using System.Collections; 

3. public class Test : MonoBehaviour 

4. { 

5. void OnEnable() 

6. { 

7. Log.doOne += DoOnething; 

8. Log.doTwo += DoTwothing; 

9. } 

10. void OnDisable() 

11. { 

12. Log.doOne -= DoOnething; 

13. Log.doTwo -= DoTwothing; 

14. } 

15. public void DoOnething(string str) 

16. { 

17. Debug.Log("DoOnething " + str); 

18. } 

19. public void DoTwothing(string str) 

20. { 

21. Debug.Log("DoTwothing " + str); 

22. } 

23. }

 

 

        在OnEnabel和OnDisable中启动与关闭委托,这也是为什么Log.cs中要判断一下委托是否为空。如果为空的话是会有错误的。比如 

Log.doOne += DoOnething; 

 

        这段代码的意思就是为委托事件赋值,让本类的DoOnethine(string str)方法接受委托传递回来的事件,这里起到一个回调的作用。 

Log.doOne -= DoOnething; 

 

        就是释放当前的委托事件,因为Log.doOne是一个静态类型的变量,不用的时候把他关掉,一旦关掉后,DoOnething方法就接收不到回调信息了,除非再次 += 添加。 

 

        最后就是当Log.cs中调用 doOne(“狗刨”);的时候,实际上就是回调Test.cs中的 DoOnething(string str); 

 

        运行一下看看效果大家就明白啦。  

 

60、用 C 和 Unity 3D 进行游戏开发的深入指南 本文是一篇关于使用 C# 和 Unity 3D 进行游戏开发的深入指南。内容涵盖了游戏命名空间与结构设计、常用设计模式及其应用(如单例模式、工厂模式、装饰器模式和观察者模式)、开发中的注意事项以及如何使用外部库(DLL)提升开发效率。文章还介绍了 C# 在其他领域的广泛应用,旨在帮助开发者构建高效、可维护的游戏架构,并掌握相关工具和技术以应对复杂的开发需求。 阅读详情

相关推荐

避坑指南:Dify+Docker+Ollama离线部署实战与疑难解析

本文详细解析了在国产化系统(如银河麒麟V10)内网环境中,如何从零开始离线部署Dify、Docker与Ollama的全栈AI应用开发平台。文章重点拆解了Docker安装中的“没有Release文件”和“GPG密钥错误”等典型报错解决方案,并提供了Ollama离线模型导入与Dify连接配置的完整实战指南,旨在帮助开发者高效完成本地部署,避开常见陷阱。

dd012的博客 464

unity设置代理,以及解决下载依赖包报错 unable to verify the first certificate的问题

使用unity,必须能够联网,需要下载一些依赖包或者登陆。在公司中,一般都是使用代理进行连接外网的,总结一下unity使用代理联网的一些坑。 1、设置代理 设置代理方式主要有2种, 1、在环境变量中增加HTTP_PROXY与HTTPS_PROXY环境变量,我这不详细介绍了,你们百度。 2、我比较喜欢的使用方式,用文本打开一个文件,把下面代码复制到文件中,修改你们的代理地址与你们的Unity执行文件的路径信息。保存文件为后缀为bat的文件。双击bat文件就可以启动unity hub了。 @echo

XR风云 8995

Rstan下载安装攻略

准备把Rtools删掉,重新下载(胡乱猜测是安装顺序的问题),但是卸载时显示Rtools被占用,但我已经把该关的都关了。这一问题的出现,直接让我卸载掉了Rstudio,又重新安装了一个,不过这次安装在另一个磁盘,因为原来的内存不多了。或者参考知乎,使用清华镜像网址进行下载:(知乎链接)https://zhuanlan.zhihu.com/p/346947595(清华下载链接)https://mirrors.tuna.tsinghua.edu.cn/CRAN/bin/windows/Rtools/

m0_64643017的博客 3099

Unity 设置代理 下载资源

Unity的AssetStore下载package的时候经常抽风,而且开了代理工具的全局代理依然无效。 检索网络后得知,这是因为它下载的时候不检测IE代理设置,而是取环境变量中HTTPS_proxy和HTTP_proxy的值,所以添加这两个变量并指定其为你的代理服务地址就可以了。 具体步骤: 打开 系统属性->高级->环境变量 新建 HTTPS_proxy 和 HTTP...

Alivon的博客 7706

演化计算(蚁群算法、粒子群算法、遗传算法、演化规则......)

演化算法1.概念2.解决的问题 1.概念 传统算法(如梯度下降法、爬山法)根据导数的性质决定迭代的方向;而演化计算是一组解在一起协同作用产生一个最优解。 2.解决的问题 预测优化:演化计算(蚁群算法、粒子群算法、遗传算法等) 解的聚散、多样性:通过多次聚散,尽快得出最优解(某个解不合要求,要能够发散出去) ...

dear_jing的博客 4162

基于AutoDL复现A-LOAM

Ceres solver 是谷歌开发的一款用于非线性优化的库,在谷歌的开源激光雷达slam项目cartographer中被大量使用。在autodl上面租服务器,地区我租的重庆A区的,GPU我选择的是RTX4090,基础镜像选择的是Miniconda / conda3 / 3.8(ubuntu20.04)/11.6。在AutoDL中我使用的方式是先将该数据集先下载到自己的电脑上,然后再上传到虚拟机中。用MobaXterm解决该问题!搜到的一个解决方式:该问题属于ceres版本问题,将A-LOAM下的。

m0_61281610的博客 1942

Awake/Start/OnEnable 辨析

Start() 作为Unity创建文件时的模板里自带函数,应该大多数编写过脚本的人都知道。一般来说,Start() 可以用来做变量初始化等只在游戏开始时运行一次的代码。相比之下,知道Awake() 的人可能就要少了一半,它和Start类似,在脚本的生命周期中只会被执行一次,并且比Start要先执行。其实还有另外一个和它们类似的函数叫做OnEnable。。。

路人王小二的博客 1万+

【2026年华为暑期实习(非AI方向(通软&嵌软&测试&算法&数据科学))-4月8日-第一题- 包裹的编码】(题目+思路+Java&C++&Python解析+在线测试)

摘要:该问题要求将给定的十进制整数N转换为混合进制编码字符串,并处理回文检测。首先根据N的符号位确定编码首位(0或1),然后按输入的进制序列依次对N的绝对值进行取余和整除操作,得到编码数组。将数组元素转换为字母后生成字符串,若字符串为回文则添加"(palindrome)"后缀;否则输出最长回文子串(字典序最小)。算法采用中心扩展法检测回文,时间复杂度为O(L²),空间复杂度为O(L),其中L为字符串长度。

m0_73659489的博客 130

OnEnable和OnDisabled

设某个组件为NewBehaviour OnEnabled被调用的情况: 1、GameObject添加组件的时候,即AddComponet ; 2、包含NewBehaviour的Prefab被实例化的时候; 3、已添加NewBehaviour的GameObject由未激活到已激活的时候,即setActive(true) ; 4、NewBehaviour由不可用到可用的时候,即enabled...

怨行客 7787

Qt5.14.2开发Mqtt应用程序

然后,你就做不下去了…很明显,大部分博主写的东西不是缺头就是缺尾,带偏了许多读者。,因此我们需要clone的是这个分支版本,而不是这个默认的。然后将编译产物中include里的所有.h文件复制到。下载完后直接默认安装即可,这一步没什么好说的。看到了没,这个才是正确的操作方式,而主线的。信号来判断,自行实现自己的槽函数。然后选择构建方式,这里我选择的是。信号来判断自行实现自己的槽函数。信号来判断自行实现自己的槽函数。源代码,如下图所示,双击打开。收到下行消息时,可以通过连接。

Bruce.yang的嵌入式之旅 2310

SAP RAP 里的 EML 全解:从语言定位到事务语义,再到真实案例的落地方式

摘要:EML(Entity Manipulation Language)是ABAP RAP模型的核心组件,作为ABAP的子集用于操作业务对象(BO)。它通过声明式语法(READ/MODIFY/EXECUTE/COMMIT)统一访问BO的行为与数据,并由RAP运行时自动处理校验、锁定、草稿管理等生命周期。EML将业务语义融入代码,确保与Fiori应用共享同一套校验逻辑,并通过FAILED/REPORTED/MAPPED管道传递错误与消息。其事务控制(IN LOCAL MODE与COMMIT ENTITIES)

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 528

再议Unity3D中的Awake(),OnEnable()和Start()

引言 近来遇到了一个问题,排查到最后,发现问题的原因在于,对于Unity原生函数执行顺序的理解还不到位。之前转载过一篇介绍Unity原生函数执行顺序的文章Unity3D中脚本的执行顺序和编译顺序 单纯的讨论一个GameObject的Awake在Start函数执行是没什么实际意义的。当遇到动态加载对象,或者相互引用时,情况要复杂一些。 官方介绍 First Scene Load These

coffeecato的个人博客 2万+

使用 FastAPI 和 LangGraph 构建生产级智能体 AI 系统

这是一本关于使用 FastAPI 和 LangGraph 构建生产级智能体 AI 系统的详细书籍,全文约 10 万字。《Production-Grade Agentic AI System Design and Implementation: Building Agentic AI Systems Using FastAPI and LangGraph》随着人工智能(AI)技术的迅猛发展,智能体(Agent)作为能够自主感知、推理、决策和行动的实体,正逐渐成为构建复杂智能系统的核心。从个性化推荐、客户服务到

AI天才研究院 348

python开发游戏与unity_CTO带你做万能游戏框架 2017最新游戏框架开发课程Unity3D+lua+Python C#等,全套视频教程学习资料通过百度云网盘下载...

CTO带你做万能游戏框架 2017最新游戏框架开发课程Unity3D+lua+Python C#等xa0===============课程目录├课时 1_1 设计模式工厂模式 .A危i├课时 1_2 设计模式工厂模式 .A危i├课时 10_1 UI框架的实现.A危i├课时 10_1.A危i├课时 10_2 UI框架的实现.A危i├课时 10_2.A危i├课时 11 其他各个模块的实现.A危i├课时...

weixin_39662834的博客 336

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

来学习最容易混淆的设计模式(C#)

我们都知道在编程中,设计模式虽然经常萦绕嘴边,但是都流走于表面应用。其实“每一个模式描述了一个在我们周围不断重复发生的问题,以及该问题的解决方案的核心。这样,我们就能一次又一次地使用该方案而不必做重复劳动”。今天小编本着在一定环境中解决问题、落实方案的原则。与大家汇总式深入学习和理解这些常用的设计模式。第一部分:前期准备阶段(快速阅读式通用教程)1、设计模式|菜鸟教程: https://www.r...

unityofficial的博客 102

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

(2018干货系列八)最新VR学习路线整合

怎么学VR 即虚拟现实技术,是一种可以创建和体验虚拟世界的计算机仿真系统,它利用计算机生成一种模拟环境,是一种多源信息融合的、交互式的三维动态视景和实体行为的系统仿真使用户沉浸到该环境中。VR/AR/Unity游戏开发Unity和UE4双引擎教学囊括了大部分中小型以及大型VR游戏的开发。 初级VR/AR开发工程师 VR/AR课程介绍 中国移动互联网发展大趋势 ...

weixin_30567471的博客 1627

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

视频教程-MMOARPG地下守护神_单机版实战视频课程(下部) -Unity3D

MMOARPG地下守护神_单机版实战视频课程(下部) 二十多年的软件开发与...

weixin_33100925的博客 475

Unity3D_设计模式简介

设计模式的诞生与定义模式是在特定环境下人们解决某类重复出现问题的一套成功或有效的解决方案。每个模式都描述了一个在我们的环境中不断出现的问题,然后描述了该问题的解决方案的核心,通过这种方式,人们可以无数次地重用那些已有的解决方案,无须再重复相同的工作。模式(Pattern)起源于建筑业而非软件业 模式之父——美国加利佛尼亚大学环境结构中心研究所所长Christopher Alexander博士《A ...

bobo553443的博客 869

分享一下自己的收藏的网页资源

把收藏的网页资源贴出来做一下备份,也与大家一同晒晒。希望大家能回复更多的资源链接,我整理出来一块贴出来 _Matrix3D - Fancy Guo 青果灵动 Lua实现的常用string库 - 哇C'' 编程学习 - 全力打造汇编语言和c/c++编程学习网站Unity3D游戏开发入门教程-我要自学网Tasharen Entertainment Forum - IndexC#

jinsenianhua2012的专栏 1889

游戏开发应该掌握的知识

基础部分: 1.Java和C:除了基本的东西,泛型,接口什么的,java语法这一块还要对工厂模式,并发,代理模式这些东西非常熟练,另外最好了解一点VM的工作机制,还有非常重要的一点,最好把VM的GC机制也有个大概的了解,如何回收强引用,软引用,弱引用等等。如果你现在还是新手,建议你把Java了解透彻再往下看,很多朋友经常来问我问题,都是一些很基础的Java没有过关,所以大家还是不要忽

sada09的专栏 937

unity3d中OnEnable和Awake的顺序问题

之前受到一些误导,认为Awake与OnEnable之间的关系与Awake和

Orca的移动开发轨迹 2万+

unity5 代理 登录设置

问题描述:安装完unity5之后,进入登录界面,但是输入注册的账号和密码不能登录,原因是公司上网需要进行代理设置。如何解决呢? 解决方案:在控制面板--》系统--》高级设置--》设置环境变量。新增代理的配置,需要新增的配置项有三个,分别是: 变量名:HTTP_proxy,变量值:http://IP(或域名):端口; 变量名:HTTP_proxy_pass,变量值:用户密码; 变量名:H...

iteye_19691的博客 1636

【设计模式】使用unity实现代理模式(Proxy mode)

阅读《大话设计模式》后,自己根据unity的特性写的一个简单demo,如有不妥之处,欢迎评论纠正.... 先贴上书中的代码: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace 代理模式

赖张殷-Eagle 3098

2017年Android SDK下载安装及配置教程(附带原文地址)

首先声明: Unity版本5.6.3f1 最近试着在Unity中利用高通做AR开发时,发布项目文件需要发布到Android平台,遇到一些问题,看了网上的一些资料,踩了一些坑,现在总结出来,希望有相同的开发者遇到时可以规避。 若有任何问题可留言评论,我看到会第一时间解答。 Android开发环境搭建分为以下四步: 第一步、安装JDK; 第二步...

weixin_33958585的博客 499

【专栏精选】Unity中的HTTP网络通信

本文节选自洪流学堂公众号技术专栏《大话Unity2019》,未经允许不可转载。 洪流学堂公众号回复专栏,查看更多专栏文章。 洪流学堂,让你快人几步。你好,我是郑洪智。 大智:“小新,今天开始,我们来学习Unity中的HTTP通信。” 小新:“为啥不先学Tcp和Udp呢?这俩不是基础么?” 大智:“虽然这俩是基础,但是难度也更大。Http是应用层协议,使用起来会比较方便,可以快速入门。” ...

大智_Unity探路者 3546

System.Net.Http.dll在Unity3D(UWP)的IL2CPP模式使用的解决方案

前言 Unity3D升级到2017的版本后可以支持.Net 4.6的特性,所以引入.Net的基于任务的异步编程模型是十分具有吸引力的(更好的性能加上更优美的代码),为此我在新项目中使用了很多Async异步方法去实现网络与I/O,去替换Unity自带的协程机制的网络和I/O。其中System.Net.Http.dll这个托管库是微软封装的一层http请求接口,所以我准备在项目中使用该库进行网络请求...

博客 4044
上一篇: Unity3D学习之C#的代理和事件
下一篇: Unity3D学习之异步加载游戏场景与异步加载游戏资源进度条
Qst_Baron
博客等级 码龄12年 15粉丝 2原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值