二、纯C#对象使用 MonoBehaviour 的周期方法

本文介绍了如何在未继承Monobehavior的类中使用Unity的Update和UnityAction,通过创建MonoMgr单例类,实现了添加和移除Update回调功能。通过TestMono和MonoMgrTest示例,展示了如何利用这个类进行帧更新和协程管理。
摘要由CSDN通过智能技术生成

众所周知,继承了Monobehavior之后,我们就可以使用Unity给我们提供的一些生命周期函数。那假设类没有继承Monobehavior,但是我们又希望使用到Mono的东西,比如帧更新方法Update、协程等,这该怎么做呢?

使用 MonoMgr 解决这个问题。

代码如下:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Events;

public class MonoMgr: MonoSingletonBase<MonoMgr>
{
    private event UnityAction event_updateFun;

    private void Update() 
    {
        if(event_updateFun != null)
        {
            event_updateFun();
        }
    }

    public void AddUpdateFunListener(UnityAction fun_update)
    {
        event_updateFun += fun_update;
    }

    public void RemoveUpdateFunListener(UnityAction fun_update)
    {
        event_updateFun -= fun_update;
    }
}

  • 测试代码
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class TestMono
{
    public TestMono()
    {
        MonoMgr.GetInstance().AddUpdateFunListener(this.Update);
    }

    IEnumerator Test123()
    {
        Debug.Log("协同程序 开始执行");
        yield return new WaitForSeconds(3);
        Debug.Log("协同程序 等待了3秒");
    }

    private void Update()
    {
        Debug.Log("更新测试");
    }
}

public class MonoMgrTest : MonoBehaviour
{
    void Start()
    {
        TestMono t = new TestMono();
        MonoMgr.GetInstance().StartCoroutine(Test123());
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值