我必须在关闭应用程序之前将其销毁吗?或退出GB后收集它们?
DontDestroyOnLoad如何运作?有重新计算的东西?
答案 0 :(得分:3)
当加载新场景(级别)时,场景中实例化的对象(默认情况下)会被破坏。 使用DontDestroyOnLoad,你告诉不要遵循这种行为,这样对象将在各级之间持久化。您可以通过调用Destroy()函数来删除它。
加载新场景时,不会自动销毁对象目标。 加载新级别时,场景中的所有对象都将被销毁,然后将加载新级别中的对象。为了在级别加载期间保留对象,请在其上调用DontDestroyOnLoad。如果对象是组件或游戏对象,则其整个转换层次结构也不会被销毁。
using UnityEngine;
using System.Collections;
public class ExampleClass : MonoBehaviour {
void Awake() {
DontDestroyOnLoad(transform.gameObject);
}
}
答案 1 :(得分:3)
更改场景时,该场景中的所有非静态对象都将被销毁。当一个对象被标记为DontDestroyOnLoad
时,它在更改场景时不会被销毁。
如果以后您希望销毁该对象,可以致电
Destroy(objName);
如果您返回到最初创建对象的场景,这有时很有用。如果您在创建之前未能销毁或未能检查它已经存在,那么将最终得到2个相同类型的对象,并且两者都是不可破坏的。
如果您的应用程序退出,您不必担心自己会破坏任何内容,它将为您完成。
通过整个程序执行使对象保持活跃的另一种方法是使其静止。
public static class DataContainer
{
}