首页 | 教程 | 人才 | 资源 | 视频 | 外包 | 培训 | 论坛  
游戏教程 美术基础 3D设计 平面软件 影视后期 建筑效果 网站设计 精选教程
 
网络学堂   2D美术   3D美术   游戏动作   次时代游戏   游戏策划   游戏程序   理论   其它
 您现在的位置:首页 > 教程频道 > 游戏教程 > 游戏程序
     Unity3D教程事件、委托机制在unity3d中的使用

Unity3D教程事件、委托机制在unity3d中的使用
编辑:游戏兵工厂 发布时间:2015-10-28 查看:992 次   

Unity3D教程事件、委托机制在unity3d中的使用

关于Delegate作用我就不多说了,不懂的童鞋可以戳这看 ,Unity 中可以直接使用EventHandler实现事件委托,咱们直接事例吧。
一、场景物体移动结束后事件监听

假如PlayerControl,移动结束后触发MoveComplete事件。
using UnityEngine;
using System.Collections;
using System;
public class PlayerControl : MonoBehaviour {
public event EventHandler MoveComplete;
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
if (Input.GetMouseButtonUp(0)) {
// Test logic for PlayerMoveComplete
PlayerMoveComplete();
}
}
void PlayerMoveComplete()
{
if (MoveComplete != null) {
MoveComplete(this, EventArgs.Empty);
}
}
}
事件接收处理
using UnityEngine;
using System.Collections;
using System;
public class GameManager : MonoBehaviour {
public static GameManager Instance;
public PlayerControl playerControl;
void Awake ()
{
// check there isn't more than one instance of the GameManager in the scene
if(Instance != null){
Debug.LogError("More than one GameManager found in the scene");
return;
}
// set the global instance
Instance = this;
}
// Use this for initialization
void Start () {
playerControl.MoveComplete += HandleMoveComplete;
}
void HandleMoveComplete (object sender, EventArgs e)
{
Debug.Log("MoveComplete:");
}
// Update is called once per frame
void Update () {
}
}
这里由于使用的EventHandler实现,所以在事件中无法传递自定义参数。
二、自定义Event,事件中传递自定义参数
1、自定义EventArgs
using UnityEngine;
using System.Collections;
using System;
public class PlayerMoveEventArgs : EventArgs {
private string message;
public PlayerMoveEventArgs(string message)
{
this.message = message;
}
public string Message
{
get{return message;}
}
}
public delegate void MoveCompleteHandle(object sender, PlayerMoveEventArgs e);
那么我们修改下PlayerControl
using UnityEngine;
using System.Collections;
using System;
public class PlayerControl : MonoBehaviour {
public event EventHandler MoveComplete;
public event MoveCompleteHandle CustomMoveComplete;
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
if (Input.GetMouseButtonUp(0)) {
// Test logic for PlayerMoveComplete
PlayerMoveComplete();
}
}
void PlayerMoveComplete()
{
if (MoveComplete != null) {
MoveComplete(this, EventArgs.Empty);
}
if (CustomMoveComplete != null) {
CustomMoveComplete(this, new PlayerMoveEventArgs("Move:" + this.name));
}
}
}
处理事件的我们也修改下
using UnityEngine;
using System.Collections;
using System;
public class GameManager : MonoBehaviour {
public static GameManager Instance;
public PlayerControl playerControl;
void Awake ()
{
// check there isn't more than one instance of the GameManager in the scene
if(Instance != null){
Debug.LogError("More than one GameManager found in the scene");
return;
}
// set the global instance
Instance = this;
}
// Use this for initialization
void Start () {
playerControl.MoveComplete += HandleMoveComplete;
playerControl.CustomMoveComplete += HandleCustomMoveComplete;
}
void HandleCustomMoveComplete (object sender, PlayerMoveEventArgs e)
{
Debug.Log("HandleCustomMoveComplete:" + e.Message);
}
void HandleMoveComplete (object sender, EventArgs e)
{
Debug.Log("MoveComplete:");
}
// Update is called once per frame
void Update () {
}
}
ok,现在你可以自由的玩耍了。好了,本篇unity3d教程关于event与delegate在unity3d中的使用到此结束。

相关文章:
·Unity3d场景烘焙视频教程  [2016-01-27]
·Unity3d 5.0游戏特效入门到精通教程视频教程  [2015-12-14]
·UDK高精度低面数地形绘制图文教程  [2015-11-30]
·分享《Cocos2D-X游戏开发技术精解电子版教程下载  [2015-11-30]
·unity3d发布到移动端关于中文字体显示问题  [2015-10-28]
·Unity3d教程_基础入门到高级详解中文教程视频教程下载  [2015-09-29]
·Android手机游戏教程_游戏开发之2D手游工具汇总  [2015-09-21]
·Unity基础入门三剑客C#、Unity知识体系视频课程下载  [2015-08-14]
·Unity3d场景烘焙视频教程  [2015-08-10]
·学习unity3d教程,必须经过Photon服务器入门  [2015-08-05]
本月教程排行
全部教程热点 全部推荐教程
· 老外的经典(少女贞德)从.
· Zbrush的行业应用之游戏篇.
· 3DMAX汽车三视图建立到使用.
· ZBrush3官方中文教程
· 3ds MAX基础教程:碗和杯子.
· MAYA材质教程:制作天鹅绒.
· 经典简单室内建模方法(新手.
· 用3ds max结合photoshop制.
· 【painter 8 手绘教程】《.
· Painter 8实例:时尚插画绘.
· Maya教程_3D制作足球模型教.
· 3ds MAX教程:室内空间夜景.
· 3D MAX教程:楼梯间的立体.
· 3dsMAX基础教程 直筒水杯的.
· 《山海经》奢比兽的制作
· PS 绘画 性感美女(国外)教.
· 美术基础--原画底稿上色篇.
· [分享]结构素描
· 贴图教程_PS滤镜快速制作草.
· 原动画运动规律基础教程(翻.
DOGAME游戏兵工厂 | 交流论坛 |关于我们| 广告联系 | 联系我们
DOGAME游戏兵工厂2009-2014HNYU GAME 京ICP备13045305号