unity中object 对象之间用c# delegate方式进行通信
unity 3D经常需要设计到不同object之间数据通信和事件信息触发。这里可以利用C#本身的事件和代理的方法来实现。
这里实现了在GUI上点击按钮,触发事件,移动object cube移动的例子。
Main Camera 挂载实现GUI的 Label.cs脚本
Cube挂载 Cube.cs脚本

Label.cs
using UnityEngine;
using System;
// 声明物体移动代理类型
public delegate void EventObjectMoveDelegate(Vector3 dirct);
public class Label : MonoBehaviour {
private Rect windowRect;
public event EventObjectMoveDelegate cubeMove;
void Start()
{
windowRect = new Rect(20, 20, 200, 300);
}
// Update is called once per frame
void Update()
{
}
void OnGUI()
{
windowRect = GUI.Window(0, windowRect, Mywindowfunc, "windows");
}
void Mywindowfunc(int windowId)
{
if (GUI.Button(new Rect(10, 20, 100, 20), "moveUp"))
{
if (null != cubeMove)
{
cubeMove(Vector3.up);
}
}
if (GUI.Button(new Rect(10, 50, 100, 20), "moveDown"))
{
if (null != cubeMove)
{
cubeMove(Vector3.down);
}
}
if (GUI.Button(new Rect(10, 80, 100, 20), "moveLeft"))
{
if (null != cubeMove)
{
cubeMove(Vector3.left);
}
}
if (GUI.Button(new Rect(10, 110, 100, 20), "moveRight"))
{
if (null != cubeMove)
{
cubeMove(Vector3.right);
}
}
GUI.DragWindow(new Rect(0, 0, 10000, 1000));
}
}
cube.cs
using UnityEngine;
using System.Collections;
using System;
public class cube : MonoBehaviour {
// Use this for initialization
void Start () {
GameObject.Find("Main Camera").GetComponent<Label>().cubeMove += cubeMoveHandler;
}
// Update is called once per frame
void Update () {
}
void cubeMoveHandler(Vector3 dirct)
{
transform.Translate(dirct);
}
}

代码地址:
https://github.com/caimagic/Unity_Object_Commucation_With_Delegate.git
unity中object 对象之间用c# delegate方式进行通信的更多相关文章
- JAVA中JavaBean对象之间属性拷贝的方法
JAVA中JavaBean对象之间的拷贝通常是用get/set方法,但如果你有两个属性相同的JavaBean或有大部分属性相同的JavaBean,对于这种情况,可以采用以下几个简便方法处理. 下面对这 ...
- Unity编程标准导引-3.4 Unity中的对象池
本文为博主原创文章,欢迎转载.请保留博主链接http://blog.csdn.net/andrewfan Unity编程标准导引-3.4 Unity中的对象池 本节通过一个简单的射击子弹的示例来介绍T ...
- JAVA中JavaBean对象之间拷贝的方法
JAVA中JavaBean对象之间的拷贝通常是用get/set方法,但如果你有两个属性相同的JavaBean或有大部分属性相同的JavaBean,有个更简便的方法,他们之间的拷贝可以通过copyPro ...
- JavaScript中各种对象之间的关系
上图: 此外,补充一下图中用到的概念: 1.内置(Build-in)对象与原生(Naitve)对象的区别在于:前者总是在引擎初始化阶段就被创建好的对象,是后者的一个子集:而后者包括了一些在运行过程中动 ...
- js 中object对象的操作
n = object对象 for(var p in n){ console.log(p);// 取得是key值 console.log(n[p]);//取得是value值 } 继之前js中数组的常用方 ...
- ES6中object对象属性
//////es5中定义对象属性要么字面量.要么点.要么[],变量与空格在这些方法中没有得到好的支持 /////在es6中可以这么定义: let w='www'; let obj1={w};//obj ...
- 【Unity】Unity中资源动态载入的两种方式之AssetsBundle
首先要说的是,我们的project中有2个脚本.各自是: Build(编辑器类脚本.无需挂载到不论什么物体).可是必需要把Build脚本放到Editor目录中 Load脚本,挂载到摄像机上<pr ...
- javascript中的对象之间继承关系
相信每个学习过其他语言的同学再去学习JavaScript时就会感觉到诸多的不适应,这真是一个颠覆我们以前的编程思想的一门语言,先不要说它的各种数据类型以及表达式的不同了,最让我们头疼,恐怕就是面向对象 ...
- 谈谈Activiti中流程对象之间的关系
详细见:http://www.kafeitu.me/activiti/2012/03/22/workflow-activiti-action.html (咖啡兔好牛!) 详细见: http://blo ...
随机推荐
- Apache安装编译遇到APR的问题
http://mirrors.tuna.tsinghua.edu.cn/apache//httpd/httpd-2.4.27.tar.bz2Apache下载链接 在解压Apache源码包进入目录运行 ...
- java 使用https协议,cas认证PKIX path building failed错误解决方法
如果遇到的是 上图的异常,请继续往下看. linux 下 添加 证书 (1) 获取网站安全证书 xx.cer ( 详情见随笔 获取网站安全证书 ) (2) 将上面导出的证书导入java中的cacert ...
- 常用类:String,StringBuffer,StringBuilder
String String类被final修饰符修饰,所以不能将其进行继承,所有对它的改变都要重新创建一个新的地址 1.String的构造器 String() String(byte []bytes)/ ...
- 写一个Vue loading 插件
什么是vue插件? 从功能上说,插件是为Vue添加全局功能的一种机制,比如给Vue添加一个全局组件,全局指令等: 从代码结构上说,插件就是一个必须拥有install方法的对象,这个方法的接收的第一个参 ...
- 利用Spring的ApplicationEvent执行自定义方法
在Spring中已经定义了五个标准事件,分别介绍如下: 1)ContextRefreshedEvent:当ApplicationContext初始化或者刷新时触发该事件. 2)ContextClose ...
- python实战===使用smtp发送邮件的源代码,解决554错误码的问题,更新版!
import smtplib from email.mime.text import MIMEText from email.header import Header import time #密文输 ...
- QT server服务端如何判断客户端断开连接
在QT编程中有时会用到server服务端与客户端进行TCP网络通信,服务端部分代码如下: 1.创建server用于监听客户端套接字 this->server = new QTcpServer(t ...
- 移动端 canvas插入多张图片生成一张可保存到手机图片
第一次写随笔,想把开发中遇到的问题与大家分享,可能会让您少走一步弯路. 先看下效果图: 代码分三部分为大家展示: 1.html 部分 <div id="myQrcontainer&qu ...
- .net Path 类
检索文件扩展名. GetExtension 检索文件的完全限定路径. GetFullPath 检索路径中的文件名和扩展名. GetFileName 只检索路径中的文件名. GetFileNameW ...
- RHCE认证过程
RHCE认证,即红帽认证工程师(Red Hat Certified Engineer)的简称,认证内容包括DNS.NFS.Samba.Sendmail.Postfix.Apache和关键安全功能的详细 ...