美文网首页
自定义节点事件模块

自定义节点事件模块

作者: Qkuang | 来源:发表于2020-01-19 15:50 被阅读0次

    IFramework所有模块总目录

    简介

    此模块是在 “自定义协程模块”之上,做的一个拓展。运用“链式结构”让事件事件得以按指定顺序调用。

    自定义事件模块简单使用

    代码如下:

    using System;
    using IFramework;
    using IFramework.Moudles.Coroutine;
    using IFramework.Moudles.NodeAction;
    using UnityEngine;
    
    public class TestEvent : MonoBehaviour
    {
        // Start is called before the first frame update
        void Start()
        {
            // 初始化
            Framework.Init();
            //协程模块初始化
            Framework.moudles.Coroutine = Framework.moudles.CreateMoudle<CoroutineMoudle>();
            // 主要对象:序列节点(SequenceNode)、重做节点(RepeatNode)
            // 操作:序列节点——重做 、 重做节点——序列
    
            this.Sequence()         
                 .Repeat((r) =>
                 {
                     r.Sequence((s) =>
                     {
                         s.TimeSpan(new TimeSpan(0, 0, 3), false)   //间隔3秒
                          .Event(() => { Log.L("事件1"); }, false)
                          .TimeSpan(new TimeSpan(0,0,2),false)          //间隔2秒
                          .Event(()=>{Debug.Log("事件2");},false)      
                          .OnCompelete(() => { Log.L("完成"); })        //最终事件调用。
                          .Event(()=>{Debug.Log("事件3");},false);
                     }, false)
                     ;
                 }, 2, false)           //重做次数:2
                 .TimeSpan(new TimeSpan(0, 0, 3), false)    
                 .OnCompelete((ss) => { /*ss.Reset();*/ })
                 .OnDispose((ss) => { Log.L("销毁"); })
                 .Run(Framework.moudles.Coroutine as CoroutineMoudle);  //在协程模块运行
        }
        private void Update()
        {
            Framework.Update();
        }
        private void OnDestroy()
        {
            Framework.Dispose();
        }
    }
    
    

    输出结果如下:


    image.png

    主要注意:

    事件3 的输出顺序。
    事件2的输出时间间隔

    解析

    • 主要类:SequenceNode、RepeatNode
    • SequenceNode 包括如下操作:设置 时间间隔、设置事件(可多次)、设置完结事件、设置销毁事件、设置运行协程模块、重做(可设置重复次数)
    • RepeatNode 操作只有一个:获取 SequenceNode。
    • 这些节点有一个共同的属性,是否自动dispose
      其他节点无所谓,Repeat节点内部的节点一定不能让其自动回收,否则会产生空引用问题
      只要在最外面的节点方法内调用dispose,内部的都会dispose

    结尾

    以上内容是 作者个人的理解,如有错误,欢迎指出。
    顺便给出OnClick大佬自己 写的文档地址:009 自定义节点事件模块
    如果对 IF框架有其他看法,也欢迎大家 进群交流。

    相关文章

      网友评论

          本文标题:自定义节点事件模块

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