在场景之间共享游戏对象

5
假设我有一个名为“Player”的游戏对象和两个场景A和B。 如果我在这两个场景中都添加了这个“Player”游戏对象,然后进行一些更改(例如在场景A中添加脚本),是否可以使游戏对象“Player”在A和B中保持不变? 或者我必须手动更新这两个场景中的游戏对象吗?
我找不到方便的方法来实现这一点。

听起来你正在寻找预制体 - rutter
1
为什么在场景切换时你要把这个GameObject放到A和B中,而不是从A传输相同的GameObject到B呢?最常见的方法是考虑玩家(以您自己的示例为例),在0级或某个保存点创建它,并将其作为单例持久化到所有级别,直到它死亡。因此,问题是“为什么你需要避免这种常见的方法,并在每个级别中放置两个相同的玩家?” - Frohlich
@rutter,我正在寻找一种在场景之间共享游戏对象的方法,而不是共享场景本身。预制品能实现这个吗? - Fabian Bigler
@Frohlich 你会怎么做? - Fabian Bigler
DontDestroyOnLoad() 方法告诉 Unity 在场景之间保留一个 GameObject。你只需要在其中一个行为的 Awake/Start 状态中声明它即可。 - Frohlich
@Fabian Bigler 我觉得你可能想做一些不同的事情,而不仅仅是在场景之间持久化对象,这就是为什么我在回答之前要问一下 ;) 如果你只关心场景之间的持久性,那么DontDestroyOnLoad()就可以解决它 =) - Frohlich
1个回答

5
如果您只需要在场景转换之间保持游戏对象的存在,可以使用DontDestroyOnLoad()方法。类似这样的东西应该就可以了:
using UnityEngine;
using System.Collections;

public class MyPlayer : MonoBehaviour {
    void Awake() {
        DontDestroyOnLoad(this.gameObject);
    }

    // myPlayer behaviour....
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接