public static CoroutineObj StartSceneCoroutineTimer(CoroutineAction co) { GameObject go = new GameObject(); CoroutineObj obj = go.AddComponent <CoroutineObj>(); obj.StartCoroutine(co()); go.name = "_Timer" + co.Target.ToString(); return(obj); }
/// <summary> /// 运行协程 /// </summary> /// <param name="action">协程方法</param> /// <returns>协程迭代器ID</returns> public string Run(CoroutineAction action) { CoroutineEnumerator coroutineEnumerator = Main.m_ReferencePool.Spawn <CoroutineEnumerator>().Fill(action, null); coroutineEnumerator.Run(); CoroutineEnumerators.Add(coroutineEnumerator.ID, coroutineEnumerator); DepositWarehouse(coroutineEnumerator); return(coroutineEnumerator.ID); }
/// <summary> /// 运行协程 /// </summary> /// <typeparam name="T1">协程方法的参数类型</typeparam> /// <typeparam name="T2">协程方法的参数类型</typeparam> /// <param name="action">协程方法</param> /// <param name="arg1">协程方法的参数</param> /// <param name="arg2">协程方法的参数</param> /// <returns>协程迭代器ID</returns> public string Run <T1, T2>(CoroutineAction <T1, T2> action, T1 arg1, T2 arg2) { CoroutineEnumerator coroutineEnumerator = Main.m_ReferencePool.Spawn <CoroutineEnumerator>().Fill(action, new object[] { arg1, arg2 }); coroutineEnumerator.Run(); CoroutineEnumerators.Add(coroutineEnumerator.ID, coroutineEnumerator); DepositWarehouse(coroutineEnumerator); return(coroutineEnumerator.ID); }
void Start() { delegateTest01 = Test01; delegateTest01 = Test011; Main.coroutiner.Run <Action <string>, string>(delegateTest01, s => {}, "damon1"); Main.coroutiner.Run <Action <string>, string>(delegateTest01, s => {}, "damon2"); delegateTest02 = Test02; delegateTest02 = Test022; Main.coroutiner.Run(delegateTest02, "damon1"); Main.coroutiner.Run(delegateTest02, "damon2"); }
public string Run <T1, T2>(CoroutineAction <T1, T2> action, T1 t1, T2 t2) { CoroutineEnumerator c = (CoroutineEnumerator)Main.referencePoolManager.OnSpwn <CoroutineEnumerator>(); c.Fill(action, new object[] { t1, t2 }); c.Run(); if (!coroutineEnumerators.ContainsKey(c.id)) { coroutineEnumerators.Add(c.id, c); } Addwarehouse(c); return(c.id); }
//这里的CoroutineAction只是委托,只需要将方法名填入形参即可,而不是协程方法 public string Run(CoroutineAction action) { CoroutineEnumerator c = (CoroutineEnumerator)Main.referencePoolManager.OnSpwn <CoroutineEnumerator>(); c.Fill(action, null); c.Run(); if (!coroutineEnumerators.ContainsKey(c.id)) { coroutineEnumerators.Add(c.id, c); } Addwarehouse(c); return(c.id); }
/// <summary> /// 会随着场景切换而清理的coroutine /// </summary> /// <param name="co">Co.</param> public static CoroutineObj StartSceneCoroutine <T1, T2>(CoroutineAction <T1, T2> co, T1 t1, T2 t2, bool destory = true) { GameObject go = new GameObject(); CoroutineObj obj = go.AddComponent <CoroutineObj>(); obj.StartCoroutine(co(t1, t2)); go.name = "_co" + co.Target.ToString(); if (destory) { optimized_Destory(go, 3f); } //else // SceneManager.instance.clearOnChangeScene.Add(go); return(obj); }
private IEnumerator GenericCoroutine(CoroutineAction f, float duration_s, CoroutineCallback callback = null) { float t = 0.0f; while (t < 1.0f) { t += Time.deltaTime / duration_s; f(t); yield return(null); } if (callback != null) { callback(); } }
void Start() { cor03 = Print; string id1 = Main.coroutiner.Run(cor01); string id2 = Main.coroutiner.Run <float>(cor03, 1); string id3 = Main.coroutiner.Run <DAction>(PrintAction, () => { //Debug.Log("ni hao"); }); Main.coroutiner.Run <DAction>(PrintAction, () => { //Debug.Log("ni hao damon"); }); Main.coroutiner.Run <string, string>(PrintAction, "a", "b"); Main.coroutiner.Run <float, float>(PrintAction, 1, 2); //TankResInfo resInfo = new TankResInfo("models", "Assets/Tanks/Assets/Models/Radar.fbx", ""); //StartCoroutine(Main.resourceManager.LoadAssetAsync(resInfo, null,obj=> { // //GameObject go = Instantiate<GameObject>((obj as UnityEngine.Object)); // this.d("damon","---"); //})); //entity = new Entity(); //Main.eventManager.Register(typeof(LoginEvent), (System.Object obj, BaseEvent e) => //{ // LoginEvent login = e as LoginEvent; //}); //Main.eventManager.Register(typeof(EntityCreateEvent), (object o, BaseEvent e) => //{ // this.d("damon", o.GetType().ToString()); // this.d("damon", e.GetType().ToString()); //}); }
private IEnumerator Fade(float time, CoroutineAction midFade, CoroutineAction afterFade) { float startTime = Time.time; while ((Time.time - startTime) < time) { float frac = ((Time.time - startTime) / time); Blackboard.GM.BlackScreen.color = new Color(Blackboard.GM.BlackScreen.color.r, Blackboard.GM.BlackScreen.color.g, Blackboard.GM.BlackScreen.color.b, frac); yield return(null); } midFade(); // Fade in startTime = Time.time; while ((Time.time - startTime) < time) { float frac = ((Time.time - startTime) / time); Blackboard.GM.BlackScreen.color = new Color(Blackboard.GM.BlackScreen.color.r, Blackboard.GM.BlackScreen.color.g, Blackboard.GM.BlackScreen.color.b, (1 - frac)); yield return(null); } afterFade(); Blackboard.Player.PlayerMovement.canMove = true; }
public void StartFade(float time, CoroutineAction midFade, CoroutineAction afterFade) { Blackboard.Player.PlayerMovement.canMove = false; StartCoroutine(Fade(time, midFade, afterFade)); }
public static void CreateTimer(CoroutineAction co) { if (UIRoot.list[0].transform.FindChild("_ResetSeed")) { Destroy(UIRoot.list[0].transform.FindChild("_ResetSeed").gameObject); } GameObject go = new GameObject(); CoroutineObj obj = go.AddComponent<CoroutineObj>(); obj.StartCoroutine(co()); obj.name = "_ResetSeed"; obj.transform.parent = GUIRoot.instance.transform; }
/// <summary> /// 运行协程 /// </summary> /// <typeparam name="T1">协程方法的参数类型</typeparam> /// <typeparam name="T2">协程方法的参数类型</typeparam> /// <param name="action">协程方法</param> /// <param name="arg1">协程方法的参数</param> /// <param name="arg2">协程方法的参数</param> /// <returns>协程迭代器ID</returns> public string Run <T1, T2>(CoroutineAction <T1, T2> action, T1 arg1, T2 arg2) { return(_helper.Run(action, arg1, arg2)); }
/// <summary> /// 运行协程 /// </summary> /// <typeparam name="T">协程方法的参数类型</typeparam> /// <param name="action">协程方法</param> /// <param name="arg">协程方法的参数</param> /// <returns>协程迭代器ID</returns> public string Run <T>(CoroutineAction <T> action, T arg) { return(_helper.Run(action, arg)); }
/// <summary> /// 运行协程 /// </summary> /// <param name="action">协程方法</param> /// <returns>协程迭代器ID</returns> public string Run(CoroutineAction action) { return(_helper.Run(action)); }
///<summary> ///Dispatch a Coroutine-based AsyncAction. Return the same action back. ///</summary> public static CoroutineAction <TState> Dispatch <TState>(this IStore <TState> store, CoroutineAction <TState> action) { UnityThread.ExecuteCoroutine(action(store)); return(action); }
public Coroutine(CoroutineAction <T> action) => _action = action;
public void Add(CoroutineAction i_action) { m_actions.Add(i_action); }
public void AddAction(CoroutineAction <T> action) => _actions.Add(action);