Unity 不继承MonoBehaviour的类里怎么调用Update方法?

现有一个UI框架,框架的BasePanel类不继承自MonoBehaviour,如果要显示一个面板,可以直接new出来。我们都知道,继承MonoBehaviour的类是不可以使用new方法来创建类的实例化对象的。那么,如果有一个面板,比如滑动列表,需要实时更新,怎么实现呢?

可以在GameManager里创建一个委托

1)可以使用内置委托Action来实现

using System;

public Action NonMonoUpdateMethod;    //声明一个无参、无返回值的委托类型
void Update()
{
    if(NonMonoUpdateMethod!=null)
        NonMonoUpdateMethod();
}

然后在Panel类里将方法传递给委托

GameManager.instance.NonMonoUpdateMethod = CheckShowOrHide;

此外,也可以使用delegate的自定义委托来实现

    public delegate void Weituo();  //声明一个名为Weituo的委托类型,无参数,无返回值
    public Weituo MethodField;      //声明一个Weituo类型的委托实例

    void Update()
    {
        if(MethodField != null)     //如果委托实例指向了一个方法
            MethodField();          //将参数传递给委托(此处无参)并调用委托所指向的方法
    }
GameManager.instance.MethodField = CheckShowOrHide;    //传入一个无参方法

猜你喜欢

转载自blog.csdn.net/weixin_43673589/article/details/123931878
今日推荐