回调函数复习
实现功能:
发生某事情(按下某键、点击某物体),触发某事件(声明的事件),所有已订阅该事件的方法会监听到该事件被触发,所有已订阅的方法会执行
思路:
脚本1作为发布者,声明事件
脚本2:给脚本1对应的事件添加方法
脚本3:给脚本1对应的事件添加方法,执行委托
注意:单例脚本也许挂载到游戏物体上!在重新加载场景时,最好释放事件,否则可能发生问题
脚本1
代码语言:javascript复制using UnityEngine;
public class Skode_EventHandler : MonoBehaviour {
public static Skode_EventHandler instance;
private void Awake()
{
instance = this;
}
public delegate void Handler(string content);
//实例委托
public Handler GameReset;
}
脚本2
代码语言:javascript复制using UnityEngine;
public class Skode_EventHandler1 : MonoBehaviour {
private void Start()
{
Skode_EventHandler.instance.GameReset = Skode_Method;
}
private void Skode_Method(string content)
{
Debug.Log("hi,woshi 1");
}
}
脚本3
代码语言:javascript复制using UnityEngine;
public class Skode_EventHandler2 : MonoBehaviour {
private void Start()
{
Skode_EventHandler.instance.GameReset = Skode_Method;
}
private void Skode_Method(string content)
{
Debug.Log("hi,woshi 2");
}
private void Update()
{
//回车键
if (Input.GetKeyDown(KeyCode.Return))
{
if (Skode_EventHandler.instance.GameReset != null)
Skode_EventHandler.instance.GameReset("我是Skode");
}
}
}
大家还有什么问题,欢迎在下方留言!