Unity3d 在unity中重用已使用的场景
我有一个场景在游戏开始时打开。让我们把这个场景称为“开始”。它有一个新的游戏按钮,通过加载新场景来启动游戏。这个场景叫做“游戏”。游戏在“游戏”场景结束后,我想打开“开始”场景 我正在为此使用Application.LoadLevel(“Start”)。但当“开始”场景再次打开时,所有游戏对象都将被删除,除了我在上使用DontDestroyOnLoad()的对象。如果我在“开始”场景中暂停游戏,游戏对象会返回,但在脚本中,无论它们在inspector中被分配到哪里,都会出现null 我不能在“开始”场景中的每个对象上使用DontDestryOnLoad,因为它们对“游戏”场景完全没有用处 我也尝试过Application.loadleveladdition,但会给出与DontDestroyOnLoad相同的结果 因此,我想要的过渡是开始->游戏->开始->游戏Unity3d 在unity中重用已使用的场景,unity3d,Unity3d,我有一个场景在游戏开始时打开。让我们把这个场景称为“开始”。它有一个新的游戏按钮,通过加载新场景来启动游戏。这个场景叫做“游戏”。游戏在“游戏”场景结束后,我想打开“开始”场景 我正在为此使用Application.LoadLevel(“Start”)。但当“开始”场景再次打开时,所有游戏对象都将被删除,除了我在上使用DontDestroyOnLoad()的对象。如果我在“开始”场景中暂停游戏,游戏对象会返回,但在脚本中,无论它们在inspector中被分配到哪里,都会出现null 我不能在“开
每次场景都可能从新的游戏对象开始,或者重复使用现有的游戏对象。但在“游戏”场景中不需要“开始”中的对象,但在“开始”中只需要“游戏”场景中的分数对象,我已经在其上应用了DontDestroyOnLoad。此对象将在“开始”场景中的对象上写入分数。在一个场景中创建的任何内容都将在您更改场景时被销毁,除非该对象是静态的,或者您对该对象调用了
DontDestroyOnLoad()
因此,从逻辑上讲,从开始-->游戏-->开始-->游戏是正确的,没有任何副作用。但是,必须避免重复创建对象,例如:
游戏
场景创建一个分数
对象
public class Game : MonoBehaviour
{
public GameObject score;
void Awake()
{
score = GameObject.Find("Score");
if(score == null)
{
score = Instantiate(scorePrefab) as GameObject;
DontDestroyOnLoad(score);
}
}
}
该代码确保下次重新加载游戏
场景时,不会有额外的分数
对象浮动