Unity中解决DontDestroyOnLoad的坑 您所在的位置:网站首页 unity创建新场景怎么回到原来的场景 Unity中解决DontDestroyOnLoad的坑

Unity中解决DontDestroyOnLoad的坑

2023-11-03 14:59| 来源: 网络整理| 查看: 265

一:前言

我们经常要用到DontDestroyOnLoad来使一个GameObject在切换场景的时候不被销毁 例如现在有两个场景Scene1和Scene2,在Scene1的GameManager脚本的Start方法中调用了DontDestroyOnLoad(gameObject),接着切换到Scene2,会发现GameManager对象没有被销毁,但当从Scene2切换到Scene1时,会多出一个GameManager对象,每次进入到Scenen1时都会多一个GameManager对象这是因为每次进入到Scene1时,都会执行Start方法中的DontDestroyOnLoad方法,而之前的GameManager对象没有被释放,所以会又多出一个GameManager对象

二:解决方法一

创建一个初始化的场景,在初始化场景里面的某个游戏对象的全局脚本中,把所有游戏对象全部设置成DontDestroyOnLoad,也就是切换场景时不销毁,接着进入到第一个游戏场景,也就是说逻辑永远不会再返回初始化场景,也就不会存在来回切场景DontDestroyOnLoad没有删除的问题

三:解决方法二

判断一下引用是否为空,如果为空再设置为DontDestroyOnLoad,如果不为空则删除此游戏物体

using UnityEngine; public class GameManager : MonoBehaviour { public static GameManager Instance { get; set; }//单例 private void Awake() { if (Instance != null) { Destroy(gameObject); } else { Instance = this; DontDestroyOnLoad(this); } } }

 



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

      专题文章
        CopyRight 2018-2019 实验室设备网 版权所有