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); }
// 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); }
public TheDelegater SetDelegater(string key, TheDelegater method) { if (delegaterDict.ContainsKey(key)) { delegaterDict[key] = method; } else { delegaterDict.Add(key, method); } return(delegaterDict[key]); }
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]]); }