小功能⭐️Unity委托事件

2024-08-16 08:36:14 浏览数 (2)

回调函数复习

实现功能:

发生某事情(按下某键、点击某物体),触发某事件(声明的事件),所有已订阅该事件的方法会监听到该事件被触发,所有已订阅的方法会执行

思路:

脚本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");
        }
    }
}

大家还有什么问题,欢迎在下方留言!

0 人点赞