Unity3d 如何在更改场景时保留游戏对象

Unity3d 如何在更改场景时保留游戏对象,unity3d,Unity3d,我想使用DontDestroyOnLoad方法将我实例化的预置(thumb_1和thumb_2)保留在“TimeBarContent”中 TimeBar是一个scrollview,TimeBarContent是viewport下scrollview附带的内容对象 我将预置实例化为scrollview,并希望在再次返回主场景时保留它们 我还有一些其他的场景要打开,做一些事情,完成后会回到主场景 我使用LoadSceneMode.Single加载场景,因为我认为这样可以保持更好的性能 我尝试了一些事

我想使用
DontDestroyOnLoad
方法将我实例化的预置(thumb_1和thumb_2)保留在“TimeBarContent”中 TimeBar是一个scrollview,TimeBarContent是viewport下scrollview附带的内容对象 我将预置实例化为scrollview,并希望在再次返回主场景时保留它们 我还有一些其他的场景要打开,做一些事情,完成后会回到主场景

我使用
LoadSceneMode.Single
加载场景,因为我认为这样可以保持更好的性能

我尝试了一些事情,不知道我是否在正确的道路上,但有错误或完全错误

  • 我在主场景的唤醒方法中写入
    dontdestroyoonload(timebar)

  • 我在timebar中添加了一个脚本


  • 将此脚本附加到您希望在场景之间保留的任何游戏对象。记住,在游戏对象的整个生命周期中,它只调用一次

    public class DontDestroyOnLoad : MonoBehaviour
    {
       void Awake()
       {
          DontDestroyOnLoad(this.gameObject);
       }
    }
    

    不清楚你所说的两次尝试都失败了是什么意思。。或者你所期望的正在发生或没有发生的事情。如果你不破坏它,当我回到主场景时它会留下拇指1和2不在那里,因为画布消失了。。它会把它带走的。。您需要保留整个层次结构,为什么不将其放在自己的画布中,然后它将保持不变(只要您保护该画布)我认为使用多个场景而不是一个场景和大量的画布是更好的性能,我将在移动设备上运行它这就是为什么如果canvas去拿所有东西,DontDestroyonLoad有什么用你可以有多个[le canvas,事实上,这样做显然有点好。所以试试吧。我把它添加到我的脚本中,用于预置,因为我想保留它们,但它们不在那里。记住DontDestroyOnLoad只对层次结构的根元素有效,它不能应用于单个子级。不知道在我的层次结构的图片中,我可以使用什么时间条或画布?在你的在我们的情况下,Canvas是层次结构的根元素。因此,明智的做法是将Canvas保留在DontDestroyOnLoad中以提高性能。我可以重新命名我的预置,我将数据保留在静态类中
    public class DontDestroyOnLoad : MonoBehaviour
    {
       void Awake()
       {
          DontDestroyOnLoad(this.gameObject);
       }
    }