找回密码
 立即注册
查看: 7862|回复: 75

[游戏引擎技术] unity中C#委托的应用

[复制链接]
发表于 2015-2-25 17:11 | 显示全部楼层 |阅读模式
unity 中的 有一种类型 叫委托类型  今天在Unity联盟上学习了一些  跟大家分享一下 我们常常将委托和事件合
起来讲,其实他们两是有些区别的,委托(delegate)是一种类型,而事件(Event)是一种实例(委托中的一种)
代码如下

[code=csharp]using UnityEngine;  
using System.Collections;  
  
public class TestDelegate : MonoBehaviour  
{  
  
    //定义一个委托(格式是不是很类很像),用来指向我们某个函数。(c++里面的指针函数)  
    //param参数是名字  
    private delegate void DebugString(string param);  
  
    /// <summary>  
    /// 输出中文名字  
    /// </summary>  
    public void DebugNameOfChina(string str)  
    {  
        Debug.Log("中文名字:" + str);  
    }  
  
    /// <summary>  
    /// 输出英文名字  
    /// </summary>  
    public void DebugNameOfEnglish(string str)  
    {  
        Debug.Log("English Name:" + str);  
    }  
  
    //定义一个委托的变量事件  
    private DebugString handlerDebugString;  
  
  
    void OnGUI()  
    {  
        if (GUILayout.Button("输出中文名字"))  
        {  
            //我想输出中文名字的话就给handlerDebugString  赋值成输出中文名字的这个函数DebugNameOfChina


            handlerDebugString = DebugNameOfChina;  
            handlerDebugString("丁小未");  
        }  
        else if (GUILayout.Button("Debug English Name"))  
        {  
            //我想输出英文名字的话就给handlerDebugString  赋值成输出中文名字的这个函数

DebugNameOfEnglish  
            handlerDebugString = DebugNameOfEnglish;  
            handlerDebugString("DingXiaowei");  
        }  
    }  
}  
[/code]
发表于 2017-2-24 12:35 | 显示全部楼层
很不错
发表于 2017-2-24 12:09 | 显示全部楼层
顶顶多好
发表于 2017-2-24 12:35 | 显示全部楼层
真心顶
发表于 2017-2-24 12:11 | 显示全部楼层
说的非常好
发表于 2017-2-24 11:59 | 显示全部楼层
LZ真是人才
发表于 2017-3-17 08:48 | 显示全部楼层
很不错
发表于 2017-3-17 09:10 | 显示全部楼层
真心顶
发表于 2017-3-17 08:57 | 显示全部楼层
难得一见的好帖
发表于 2017-3-17 08:53 | 显示全部楼层
说的非常好
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-5-2 15:36 , Processed in 0.096570 second(s), 25 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表