static public void SetActive(GameObject go, bool state) 
{
    if (go == null)
    {
        return;
    }
    if (go.activeSelf != state)
    {
        go.SetActive(state);
    }
}

项目中类似上面增加了新的SetActive方法,一直没仔细想原因,今天看到一篇文章,恍然大悟。

参看文章:

https://gameinstitute.qq.com/community/detail/117676

 

总结:

unity本身gameobject.SetActive(true),会触发MonoBehaviour.OnEnable()

gameobject.SetActive(false),会触发MonoBehaviour.OnDisable()

如果项目框架中希望自己控制脚本的生命周期的话,则重写SetActive或者新建统一使用的Api比较好

更多推荐