示例#1
0
    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);
    }
示例#2
0
        /// <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);
        }
示例#3
0
        /// <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);
        }
示例#4
0
    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");
    }
示例#5
0
        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);
        }
示例#6
0
        //这里的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);
        }
示例#7
0
    /// <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);
    }
示例#8
0
        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();
            }
        }
示例#9
0
    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());
        //});
    }
示例#10
0
    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;
    }
示例#11
0
 public void StartFade(float time, CoroutineAction midFade, CoroutineAction afterFade)
 {
     Blackboard.Player.PlayerMovement.canMove = false;
     StartCoroutine(Fade(time, midFade, afterFade));
 }
示例#12
0
 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;
 }
示例#13
0
 /// <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));
 }
示例#14
0
 /// <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));
 }
示例#15
0
 /// <summary>
 /// 运行协程
 /// </summary>
 /// <param name="action">协程方法</param>
 /// <returns>协程迭代器ID</returns>
 public string Run(CoroutineAction action)
 {
     return(_helper.Run(action));
 }
示例#16
0
 ///<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);
 }
示例#17
0
 public Coroutine(CoroutineAction <T> action) => _action = action;
示例#18
0
 public void Add(CoroutineAction i_action)
 {
     m_actions.Add(i_action);
 }
示例#19
0
 public void AddAction(CoroutineAction <T> action) => _actions.Add(action);