DontDestroyOnLoad使用及细节

403 阅读1分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

官方介绍:加载新场景时不自动销毁该对象。

使用起来很简单,不过要考虑到一个问题,如果重复进入该场景的话就会保存多个相同物体。下面代码可以简单的解决这个问题。 Tips:静态变量存储空间是独立的,多处挂载此脚本静态变量会使用同一个值。所以比较好的解决方案就是把该脚本挂在一个父物体上,不需要销毁的物体就挂在它下面。

代码示例:

//静态存储在独立的内存区域
static bool isReady;
    private void Awake()
    {
        if (isReady)
        {
            Destroy(this.gameObject);
        }
        else
        {
            DontDestroyOnLoad(gameObject);
            isReady = true;
        }
    }