C# 调用其他场景C上的对象#

C# 调用其他场景C上的对象#,c#,unity3d,game-development,C#,Unity3d,Game Development,我有一个问题,我想从第一个场景调用一个对象,然后在第二个场景调用该对象。我试过这么做 if (instance == null) instance = this; else if (instance != this) Destroy(gameObject); DontDestroyOnLoad(gameObject); 把它放在我不想破坏的物体上,然后改变了我的场景 void Start(){ SceneManagement.LoadScene("Menu"

我有一个问题,我想从第一个场景调用一个对象,然后在第二个场景调用该对象。我试过这么做

if (instance == null)
    instance = this;
else if (instance != this)
     Destroy(gameObject);

     DontDestroyOnLoad(gameObject);
把它放在我不想破坏的物体上,然后改变了我的场景

void Start(){
   SceneManagement.LoadScene("Menu",LoadSceneMode.Single);
}
但它不在继承权上

有人能帮我吗

编辑:

现在,当加载下一个场景时

我想要的东西已经不存在了。它正在被销毁

创建一个持久对象 在这里创建一个预加载场景你可以放置一个初始屏幕或任何你喜欢的东西,但重要的是加载应该是持久的东西(比如网络或游戏管理器)

创建一个脚本
PersistentObject.cs
,并将以下代码放入其中

private void Awake(){
DontDestroyOnLoad(this.gameObject);
}
将此脚本放在预加载程序中初始化的任何对象上

从任何地方访问对象 如果您想访问另一个场景中的对象,有几种方法,但我假设您没有对该对象的任何特定引用

因此,如果我们有一个
GameManager.cs
,并且我们在名为
cube
的预加载程序中创建了一个持久化多维数据集,我们可以通过说
gameobject cube=gameobject.FindGameobjectWithName(“多维数据集”)来获取对游戏对象的引用

现在,您可以使用
cube

少写,多做单件事 创建一个单例也将非常有用

公共静态类Singleton:monobhavior其中T:monobhavior{
私有静态T实例;
//注意这里小写和大写的区别
公共静态T实例{
得到{
if(实例==null){
instance=GameObject.FindGameObjectOfType();
}
返回实例;
}
}
}
然后可以将其添加到脚本中,以使访问属性更容易,并减少必须编写的代码量

公共类多维数据集:单例{
私有字符串cubeName=“Jeff”;
public void ChangeCubeName(字符串newName){
cubeName=newName;
}
}
要访问此类的这些方法,现在可以从代码中的任何位置调用singleton

范例

公共类游戏管理器:单行为{
私有void Start(){
cube.Instance.ChangeCubeName(“Joe”);
}
}

你的意思是希望所有场景中都有一个对象可用吗?@Haytam是的,这就是我想要的:)。你把第一个代码放在哪里?因为它应该能正常工作。我有两个场景,长官。在第一个场景中,我输入了代码,然后当我尝试加载第二个场景时,它不在那里。如果您不愿意尝试调试步骤,那么这里没有人可以帮助您@boonmingprog谢谢。我刚才说了一点,但你的回答更接近于答案:)