Unityは、MonoBehaviourを継承しないクラスでUpdateメソッドをどのように呼び出しますか?

既存のUIフレームワークがあります。フレームワークのBasePanelクラスはMonoBehaviourを継承していません。パネルを表示する場合は、直接新しいものにすることができます。MonoBehaviourを継承するクラスは、新しいメソッドを使用してクラスのインスタンス化されたオブジェクトを作成できないことは誰もが知っています。では、スライドリストなど、リアルタイムで更新する必要のあるパネルがある場合、それを実現するにはどうすればよいでしょうか。

GameManagerでデリゲートを作成できます

1)組み込みのデリゲートアクションを使用して、

using System;

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

次に、Panelクラスのデリゲートにメソッドを渡します

GameManager.instance.NonMonoUpdateMethod = CheckShowOrHide;

さらに、デリゲートのカスタムデリゲートを使用して達成することもできます

    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