【发布时间】:2018-10-08 19:01:33
【问题描述】:
您好,我正在制作一个基于披萨菜单的游戏,我的 menuCard 场景中有许多对象,它们附加了 Don't destroy on load 以便我可以将它们移动到下一个屏幕,但是当我想来的时候回到 menuCard 场景,我不想要在加载时不会破坏的对象
菜单卡 => 我的所有物品都在哪里 场景 1 => 我想将它们移动到下一个屏幕。
【问题讨论】:
标签: unity3d
您好,我正在制作一个基于披萨菜单的游戏,我的 menuCard 场景中有许多对象,它们附加了 Don't destroy on load 以便我可以将它们移动到下一个屏幕,但是当我想来的时候回到 menuCard 场景,我不想要在加载时不会破坏的对象
菜单卡 => 我的所有物品都在哪里 场景 1 => 我想将它们移动到下一个屏幕。
【问题讨论】:
标签: unity3d
其中一种方法是保留对 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) ;
}
}
【讨论】:
不要尝试取消设置 DontDestroyOnLoad。首先将它们拆分到自己的场景中,然后将它们与 menuCard 场景分开加载。
【讨论】: