Unity框架:JKFrame2.0学习笔记(十二)——MonoSyste(2)
  v5bEezpf7PPs 2023年11月02日 35 0

如何使用

上一篇记录了内部结构

这一篇主要记录下如何使用MonoSystem与协程工具

MonoSystem

新建脚本MonoTest.cs

脚本内容如下:

using System;
using System.Collections;
using System.Collections.Generic;
using JKFrame;
using UnityEngine;

public class MonoTest:MonoBehaviour
{
    private void Update()
    {
        if (Input.GetKeyDown(KeyCode.A))
        {
           MonoAction.Init();
        }
        if (Input.GetKeyDown(KeyCode.S))
        {
            MonoAction.Destroy();
        }
    }
}

public class MonoAction
{
    public static void Init()
    {
        MonoSystem.Init();
        MonoSystem.AddUpdateListener(UpdateAct);
        Debug.Log("添加Update监听");
    }

    public static void Destroy()
    {
        MonoSystem.RemoveUpdateListener(UpdateAct);
        Debug.Log("移除Update监听");
    }

    private static void UpdateAct()
    {
        Debug.Log("调用了Update");
    }
}

按下A键的时候添加update的监听,按下S键的时候移除update的监听

看下运行的效果

Unity框架:JKFrame2.0学习笔记(十二)——MonoSyste(2)_框架


协程

我们再来看下协程工具的相关用法

在MonoTest脚本的基础上,我们改进下

声明一个协程方法

static IEnumerator EnumeratorTest()
    {
        yield return new WaitForSeconds(2f);
        Debug.Log("2s协程测试");
    }

声明一个Coroutine字段

private static Coroutine coroutine;

启动协程的时候要用coroutine接收下回调

看下全部代码

using System;
using System.Collections;
using System.Collections.Generic;
using JKFrame;
using UnityEngine;

public class MonoTest:MonoBehaviour
{
    private void Update()
    {
        if (Input.GetKeyDown(KeyCode.A))
        {
            MonoAction.Init();
        }
        if (Input.GetKeyDown(KeyCode.S))
        {
            MonoAction.Destroy();
        }
    }
}

public class MonoAction
{
    private static Coroutine coroutine;
    public static void Init()
    {
        MonoSystem.Init();
        // MonoSystem.AddUpdateListener(UpdateAct);
        // Debug.Log("添加Update监听");
        Debug.Log("开始协程");
        coroutine = MonoSystem.Start_Coroutine(EnumeratorTest());
    }

    public static void Destroy()
    {
        // MonoSystem.RemoveUpdateListener(UpdateAct);
        // Debug.Log("移除Update监听");
        MonoSystem.Stop_Coroutine(coroutine);
        Debug.Log("结束协程");
    }

    private static void UpdateAct()
    {
        Debug.Log("调用了Update");
    }

    static IEnumerator EnumeratorTest()
    {
        yield return new WaitForSeconds(2f);
        Debug.Log("2s协程测试");
    }
}

测试下:

Unity框架:JKFrame2.0学习笔记(十二)——MonoSyste(2)_unity_02

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

v5bEezpf7PPs