C# 在Unity中,如何保存游戏对象的列表,包括它们的状态,并使它们持续到下一个场景?

C# 在Unity中,如何保存游戏对象的列表,包括它们的状态,并使它们持续到下一个场景?,c#,unity3d,C#,Unity3d,我将Unity 5.2.0f3用于当前项目,该项目将玩家置于模拟工厂的管理角色。玩家可以选择在游戏期间雇佣额外的工人来加速生产。玩家还可以选择不同的楼层布局(Unity场景)。我遇到的问题是,由于场景更改,每次加载不同的布局时,所有额外的工作人员都会被销毁 我尝试将DontDestroyOnLoad(gameObject)添加到Start()函数中,但没有任何好处。我挠头已经有一段时间了,所以我非常感谢你在这方面的帮助 编辑:忘记添加相关代码 我有两个脚本。HiringManager.cs实例化

我将Unity 5.2.0f3用于当前项目,该项目将玩家置于模拟工厂的管理角色。玩家可以选择在游戏期间雇佣额外的工人来加速生产。玩家还可以选择不同的楼层布局(Unity场景)。我遇到的问题是,由于场景更改,每次加载不同的布局时,所有额外的工作人员都会被销毁

我尝试将DontDestroyOnLoad(gameObject)添加到Start()函数中,但没有任何好处。我挠头已经有一段时间了,所以我非常感谢你在这方面的帮助

编辑:忘记添加相关代码

我有两个脚本。HiringManager.cs实例化其他工人,并附加到空游戏对象,WorkerAI.cs附加到每个工人游戏对象并处理工人行为

用于实例化其他员工(HiringManager)的代码:


我想出来了。原来我的代码很好。。。大部分情况下。在实例化其他工作人员的代码段中,您可以看到这一行:

_worker.transform.parent = GameObject.Find ("Workers").transform;
在这里,我所做的就是为新的工作者游戏对象设置父变换,这也是现有工作者的父变换。我注释掉了这一行,当场景发生变化时,我的工作人员仍保留在层次结构中


我认为发生了什么,如果我在这里不正确,请纠正我,这是由于游戏对象的父对象被销毁,这导致此工作对象和所有其他工作对象也被销毁。

您可以通过为初学者编写代码来完成此操作。。如果您的代码有问题,请认真考虑。。当别人看不到你看到的代码时,他们怎么知道你在做什么。。还要学习使用您可以使用的工具,例如调试器。。仔细检查你的代码,试着找出故障发生的地方。非常基本,但我在我的问题中添加了相关的代码。另外,我知道在这种情况下唯一没有帮助的Unity调试器是帧调试器。我错过了什么,或者我到底做错了什么,我不确定。这是我的问题。这里有Visual Studio调试器,或者任何其他用于编写C#代码的程序。Unity在默认情况下有一些功能,但我不记得它是什么。我正在使用Notepad++进行脚本编辑,但我可以尝试VS调试器,看看它是否能告诉我一些信息。
void Start()
    if (CompareTag("New Worker")) {
        DontDestroyOnLoad(gameObject);
    }
}
_worker.transform.parent = GameObject.Find ("Workers").transform;