自定义节点事件模块

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框架有其他看法,也欢迎大家 进群交流。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  •   JavaScript 与 HTML 之间的交互是通过事件实现的。   事件,就是文档或浏览器窗口中发生的一些特...
    霜天晓阅读 8,864评论 1 11
  • Go-ethereum 源码解析之 miner/worker.go (下) Appendix D. 详细批注 1....
    furnace阅读 6,185评论 0 0
  • 概要 64学时 3.5学分 章节安排 电子商务网站概况 HTML5+CSS3 JavaScript Node 电子...
    阿啊阿吖丁阅读 13,124评论 0 3
  • 本节介绍各种常见的浏览器事件。 鼠标事件 鼠标事件指与鼠标相关的事件,主要有以下一些。 click 事件,dblc...
    许先生__阅读 7,263评论 0 4
  • 感赏儿子今天去上学的时候对我星期的钱没花完,让我少给些。 感赏儿子每星期的衣服都在学校自己洗了。 感赏儿子情绪平稳...
    花落风知道阅读 2,944评论 1 1