在场景之间共享游戏对象

Posted

技术标签:

【中文标题】在场景之间共享游戏对象【英文标题】:Share GameObjects between scenes 【发布时间】:2015-11-18 18:39:14 【问题描述】:

假设我有一个 GameObject 'Player' 和两个场景 A 和 B。 如果我在两个场景中添加这个 GameObject 'Player' 然后进行一些更改(例如在场景 A 中添加脚本),我能否以某种方式实现 GameObject 'Player' 在 A 和 B 中保持相同? 还是我必须手动更新两个场景中的游戏对象?

我找不到方便的方法来实现这一点。

【问题讨论】:

听起来你在找prefabs。 当你改变场景时,为什么你要把这个 GameObjet 放到 A 和 B,而不是从 A 转移到 B?在播放器(您自己的示例)中考虑的最常见方法是在级别 0 或某个保存点创建它,并将其作为单例级别持续存在直到它死亡,所以问题是“为什么您需要避免这种常见方法并放置 2 个玩家每个级别都有相同的想法吗?” @rutter 我正在寻找一种的方法,而不是场景本身。预制件也能做到这一点吗? @Frohlich 你会怎么做? DontDestroyOnLoad() 方法告诉 Unity 在场景之间持久化 GameObject...您只需在行为的 Awake/Start 状态之一上声明它... 【参考方案1】:

如果您只需要在场景转换之间保留 GameObjects,您可以使用 DontDestroyOnLoad() 方法。

这样的事情应该很划算:

using UnityEngine;
using System.Collections;

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

    // myPlayer behaviour....

【讨论】:

以上是关于在场景之间共享游戏对象的主要内容,如果未能解决你的问题,请参考以下文章

设计模式享元在游戏中的使用

在场景之间切换会冻结触摸

无法更改其他场景中的游戏对象位置

如何在 Unity 的另一个场景中访问游戏对象 [重复]

2022-02-14 U3D全栈班 004-Unity对象详解

(统一)销毁当前场景中的游戏对象并在加载当前场景后使其永久销毁?