美文网首页Unity
Unity 静态类执行Update()

Unity 静态类执行Update()

作者: 东熊 | 来源:发表于2019-08-06 05:23 被阅读0次

最简单的实现方法,是在一个继承MonoBehaviour的类的Update方法中直接调用静态类的Update(),然后将该脚本挂载到任意游戏物体上并设置为不被销毁。

static class Server
{
    public static void Update()
    {
        //Update...
    }
}
class Handle : MonoBehaviour
{
    void Start()
    {
        DontDestroyOnLoad(gameObject);    
    }

    void Update()
    {
        Server.Update();
    }
}

但这让这个静态类对一个场景物体产生了耦合,这样在更换场景或是不同项目的复用上产生了不便,于是可以把生成游戏物体这个操作由手动转为静态类中自行生成。

static class Server
{
    static Server()
    {
        //生成一个游戏物体,添加Handle组件并注册事件
        GameObject mono = new GameObject("ServerMono");
        mono.AddComponent<Handle>().OnUpdate += Update;
    }

    public static void Update()
    {
        Debug.Log("Server Update");
    }
}
class Handle : MonoBehaviour
{
    public event Action OnUpdate;

    void Start()
    {
        DontDestroyOnLoad(gameObject);    
    }

    void Update()
    {
        OnUpdate?.Invoke();
    }
}

这样,在静态成员被调用时,静态类的静态构造函数会被执行,然后生成物体并执行Update。

public class GameManager : MonoBehaviour
{
   // emmm随意执行一下静态类的一个函数激活静态构造函数
   void Start()
   {
       Server.Connect();
   }
}

执行效果



抛砖引玉,大鸟勿喷~~

相关文章

网友评论

    本文标题:Unity 静态类执行Update()

    本文链接:https://www.haomeiwen.com/subject/rlebdctx.html