事件(Events)

类似委托的一种,不同的是,创建一个静态的事件变量,储存其他脚本上的方法,然后在这个脚本上调用

 

Public delegate void ClickAction();//不可以带参数

Public static event ClickAction OnClicked;

 

Update()

{

 If(input.getkeydown(keycode.Space)&&ConClicked!=null)

 {

   OnClicked();

 }

}

 

在其他脚本里

 

Void OnEnable()

{

   注册OnClicked()的方法,那个方法来自这个脚本

}

Void OnDisable()

{

  移除OnClicked()的方法,那个方法来自这个脚本

}

 

匿名方法

一般来说是 

//QQGroup.Instance.loginDel += Login;
//QQGroup.Instance.messageDel += Message;

而匿名方法

        QQGroup.Instance.loginDel += delegate(string name) 
        {
            Debug.Log(name + "已上线~~");
        };

        QQGroup.Instance.messageDel += delegate(string name, string message)
        {
            Debug.Log(name + "新消息~~:" + message);
        };

这样写在方法里执行过以后,这样就不需要定义新方法`可直接使用``比较适用于只使用一次的内容`

 

此处应该有一个或者几个用来注册的方法~,这样点击一下 

第二个物体处于某种状态的时候,第一个脚本按下某按钮会有效果

例子!

   如果主角靠近洗澡的女NPC(洗澡是条件)

   按下了谈话,女NPC会触发赶走的谈话~~

   不在洗澡又是另外一种谈话~

 

posted @ 2017-07-24 22:36  sign尊者  阅读(84)  评论(0编辑  收藏  举报