示例#1
0
        public static Updater Create(GameObject receiver, TheDelegater eventMethod, bool require = true)
        {
            Updater runner = require ? RequireTComponent <Updater>(receiver) : receiver.AddComponent <Updater>();

            runner.SetDelegater(eventMethod);
            return(runner);
        }
示例#2
0
        // Use this for initialization
        public static DeferredActing Create(float wait, GameObject provider, TheDelegater func, ActionMode mode = default(ActionMode), string actionName = "", WaiterType type = WaiterType.Inovker, bool isFrame = false)
        {
            DeferredActing delayer = null;

            switch (mode)
            {
            case ActionMode.Ascending:
                delayer = provider.AddComponent <DeferredActing>();
                break;

            case ActionMode.Require:
                DeferredActing[] deferrers = provider.GetComponents <DeferredActing>(); bool has = false;
                foreach (var deferrer in deferrers)
                {
                    if (deferrer.DelegaterName == actionName)
                    {
                        delayer = deferrer; has = true; break;
                    }
                }
                if (!has)
                {
                    delayer = provider.AddComponent <DeferredActing>();
                }
                break;

            case ActionMode.Replace:
                DeferredActing[] _deferrers = provider.GetComponents <DeferredActing>();
                foreach (var deferrer in _deferrers)
                {
                    if (deferrer.DelegaterName == actionName)
                    {
                        Destroy(deferrer);
                    }
                }
                delayer = provider.AddComponent <DeferredActing>();
                break;
            }
            delayer.SetDelegater(func);
            switch (type)
            {
            case WaiterType.Coroutine:
                delayer.IsWaitFrame = isFrame;
                delayer.Coroutine   = delayer.StartCoroutine(delayer.CoroutineCallback(wait));
                break;

            case WaiterType.Inovker:
                delayer.Invoke("InvokeCallback", wait);
                break;

            case WaiterType.AsyncAwait:
                delayer.AsyncCall(wait, delayer.TokenSource);
                break;
            }
            delayer.DelegaterName = actionName;

            return(delayer);
        }
示例#3
0
 public TheDelegater SetDelegater(string key, TheDelegater method)
 {
     if (delegaterDict.ContainsKey(key))
     {
         delegaterDict[key] = method;
     }
     else
     {
         delegaterDict.Add(key, method);
     }
     return(delegaterDict[key]);
 }
示例#4
0
 public TheDelegater SetDelegater(TheDelegater method, int index = 0)
 {
     if (delegaterDict.ContainsKey(defaultKeys[index]))
     {
         delegaterDict[defaultKeys[index]] = method;
     }
     else
     {
         delegaterDict.Add(defaultKeys[index], method);
     }
     return(delegaterDict[defaultKeys[index]]);
 }