美文网首页
Unity(好用的Event事件脚本)

Unity(好用的Event事件脚本)

作者: UnityChan | 来源:发表于2019-10-23 16:08 被阅读0次

超级好用的event事件脚本

using UnityEngine;
using System;
using System.Collections;
using System.Collections.Generic;

namespace Code.Frame
{
 public class Event<TClass, TValue> where TClass : Event<TClass, TValue>, new()
    {
        private static TClass instance = null;
        private static TClass Instance
        {
            get
            {
                if (instance == null) instance = new TClass();
                return instance;
            }
        }

        event Action<TValue> Events;

        void listen(Action<TValue> action)
        {
            Events += action;
        }
        void unlisten(Action<TValue> action)
        {
            Events -= action;
        }
        void fire(TValue value)
        {
            if (Events != null) Events(value);
        }
        public static void Listen(Action<TValue> action)
        {
            Instance.listen(action);
        }
        public static void Unlisten(Action<TValue> action)
        {
            Instance.unlisten(action);
        }
        public static void Fire(TValue value)
        {
            Instance.fire(value);
        }
    }

    public class Event<TClass, TValue1,TValue2> where TClass : Event<TClass, TValue1,TValue2>, new()
    {
        private static TClass instance = null;
        private static TClass Instance
        {
            get
            {
                if (instance == null) instance = new TClass();
                return instance;
            }
        }

        event Action<TValue1,TValue2> Events;

        void listen(Action<TValue1,TValue2> action)
        {
            Events += action;
        }
        void unlisten(Action<TValue1, TValue2> action)
        {
            Events -= action;
        }
        void fire(TValue1 value1, TValue2 value2)
        {
            if (Events != null) Events(value1,value2);
        }
        public static void Listen(Action<TValue1, TValue2> action)
        {
            Instance.listen(action);
        }
        public static void Unlisten(Action<TValue1, TValue2> action)
        {
            Instance.unlisten(action);
        }
        public static void Fire(TValue1 value1, TValue2 value2)
        {
            Instance.fire(value1, value2);
        }
    }


    public class Event<TClass, TValue1, TValue2,TValue3> where TClass : Event<TClass, TValue1, TValue2, TValue3>, new()
    {
        private static TClass instance = null;
        private static TClass Instance
        {
            get
            {
                if (instance == null) instance = new TClass();
                return instance;
            }
        }

        event Action<TValue1, TValue2, TValue3> Events;

        void listen(Action<TValue1, TValue2, TValue3> action)
        {
            Events += action;
        }
        void unlisten(Action<TValue1, TValue2, TValue3> action)
        {
            Events -= action;
        }
        void fire(TValue1 value1, TValue2 value2, TValue3 value3)
        {
            if (Events != null) Events(value1, value2, value3);
        }
        public static void Listen(Action<TValue1, TValue2, TValue3> action)
        {
            Instance.listen(action);
        }
        public static void Unlisten(Action<TValue1, TValue2, TValue3> action)
        {
            Instance.unlisten(action);
        }
        public static void Fire(TValue1 value1, TValue2 value2, TValue3 value3)
        {
            Instance.fire(value1, value2, value3);
        }
    }



    public class Event<TClass> where TClass : Event<TClass>, new()
    {
        private static TClass instance = null;
        private static TClass Instance
        {
            get
            {
                if (instance == null) instance = new TClass();
                return instance;
            }
        }

        event Action Events;

        void listen(Action action)
        {
            Events += action;
        }
        void unlisten(Action action)
        {
            Events -= action;
        }
        void fire()
        {
            if (Events != null) Events();
        }
        public static void Listen(Action action)
        {
            Instance.listen(action);
        }
        public static void Unlisten(Action action)
        {
            Instance.unlisten(action);
        }
        public static void Fire()
        {
            Instance.fire();
        }
    }
}

相关文章

网友评论

      本文标题:Unity(好用的Event事件脚本)

      本文链接:https://www.haomeiwen.com/subject/syrcvctx.html