【问题标题】:Remove Don't Destroy On Load删除加载时不要破坏
【发布时间】:2018-10-08 19:01:33
【问题描述】:

您好,我正在制作一个基于披萨菜单的游戏,我的 menuCard 场景中有许多对象,它们附加了 Don't destroy on load 以便我可以将它们移动到下一个屏幕,但是当我想来的时候回到 menuCard 场景,我不想要在加载时不会破坏的对象

菜单卡 => 我的所有物品都在哪里 场景 1 => 我想将它们移动到下一个屏幕。

【问题讨论】:

标签: unity3d


【解决方案1】:

其中一种方法是保留对 DontDestroyOnLoad 实例的引用并在创建时删除重复项。只需将该脚本添加到场景中您希望不可破坏的对象,并在检查器字段中设置唯一 ID。

    public class DontDestroyOnLoad : MonoBehaviour 
    {
        [SerializeField] string _id;

        public static DontDestroyOnLoad Get(string id)
        {
            var instances = FindObjectsOfType<DontDestroyOnLoad>();
            return instances.FirstOrDefault(i => i._id == id);
        }

        void Awake()
        {
            if (string.IsNullOrEmpty(_id))
            {
                _id = Guid.NewGuid().ToString();
            }

            var instance = Get(_id);

            if (instance != null && instance != this)
            {
                Destroy(instance.gameObject);
            }
            DontDestroyOnLoad(gameObject) ;
        }
    }

【讨论】:

    【解决方案2】:

    不要尝试取消设置 DontDestroyOnLoad。首先将它们拆分到自己的场景中,然后将它们与 menuCard 场景分开加载。

    【讨论】:

      猜你喜欢
      • 2018-06-05
      • 2021-08-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多