Unity 的用UnityEvent来自定义触发方式

这个想来只要知道UnityEvent是个什么就很简单,可以按照自己的需要添加触发事件的类型,在需要的时间点触发,需要注意两点:

1.我添加了一个Layer层的检测,主要是用来在场景中多一层是否触发的开关,只有在LayerMask内的Layer才会触发

2.代码中有调用一个IsInMask(GameObject go)这样的方法,这个是用来判断Layer是否在LayerMask内的方法,是我自己对LayerMask这个类写的一个扩展方法,方便直接调用的,扩展方法的写法:Unity扩展方法

    public enum EventMode//自定义事件类型
    {
        MouseEnter,
        MouseExit,
        MouseUp,
        MouseDown,
        MouseDrag,
        TriggerEnter,
        TriggerExit,
        TriggerStay,
        UIHover,
        UIClick,
        UIPress,
        UIDrag,

        No
    }

public class TriggerEvents : MonoBehaviour {
    public bool openLayerDetect = false;//Layer层检测触发
    public LayerMask triggerLayer;

    public EventMode[] eventModes;
    public UnityEvent[] unityEvents;


    private void OnMouseEnter()
    {
        for(int i =0;i

 

你可能感兴趣的:(Unity事件)