重新加载场景后丢失引用,即使它们再次存在
Losing references after reloading the scene, even though they exist again
所以基本上我在手机上创建了一个 space 沙盒游戏,您可以在其中创建自己的宇宙。在游戏开始时,您可以选择您的火箭。每个火箭都有自己的相机、播放器和生成器。不是最好的解决方案,但它有效。在玩家选择了他的火箭后,我摧毁了不活动的生成器,所以它们不起作用。
我的问题是当退出场景并选择不同的火箭并重复该过程时,具有对所有生成器的所有引用的 SpawningManager 丢失了对它们的引用。即使我重新加载了场景,所有引用仍然丢失。
对不起,如果这很难理解,但很难解释。
这是销毁刷怪箱的部分代码(用颜色表示)
if (BlueSelected == true)
{
Destroy(RedSpawner);
Destroy(OrangeSpawner);
Destroy(YellowSpawner);
Destroy(GreenSpawner);
}
以及其中一个星球刷怪笼的一部分(用颜色表示)
{
public 变换 SpawnPointBlue、SpawnPointRed、SpawnPointOrange、SpawnPointYellow;
public 游戏对象 Mercury;
// Checks if the Spawner is greater than null (There or not) and Instantiates the Object at the Players Position
public void SpawnMercury()
{
if(SpawnPointBlue != null)
{
Instantiate(Mercury, SpawnPointBlue.position, SpawnPointBlue.rotation);
}
if(SpawnPointRed != null)
{
Instantiate(Mercury, SpawnPointRed.position, SpawnPointRed.rotation);
}
if(SpawnPointOrange != null)
{
Instantiate(Mercury, SpawnPointOrange.position, SpawnPointOrange.rotation);
}
if(SpawnPointYellow != null)
{
Instantiate(Mercury, SpawnPointYellow.position, SpawnPointYellow.rotation);
}
如果我理解得很好,您的 SpawnerManager 处于“不要在加载时销毁”并在场景之间保持存在。当您开始游戏时,您已经手动将生成器引用到管理器,并且一切都很好,然后当您转到另一个场景并返回生成器应该在的位置时,不再有对管理器的引用?
如果是这样,这个接缝对我来说很正常,不支持场景之间的引用,当场景被卸载时,引用消失。
如果我误解了什么,我很乐意挖掘一下解决方案
所以基本上我在手机上创建了一个 space 沙盒游戏,您可以在其中创建自己的宇宙。在游戏开始时,您可以选择您的火箭。每个火箭都有自己的相机、播放器和生成器。不是最好的解决方案,但它有效。在玩家选择了他的火箭后,我摧毁了不活动的生成器,所以它们不起作用。 我的问题是当退出场景并选择不同的火箭并重复该过程时,具有对所有生成器的所有引用的 SpawningManager 丢失了对它们的引用。即使我重新加载了场景,所有引用仍然丢失。 对不起,如果这很难理解,但很难解释。
这是销毁刷怪箱的部分代码(用颜色表示)
if (BlueSelected == true)
{
Destroy(RedSpawner);
Destroy(OrangeSpawner);
Destroy(YellowSpawner);
Destroy(GreenSpawner);
}
以及其中一个星球刷怪笼的一部分(用颜色表示)
{ public 变换 SpawnPointBlue、SpawnPointRed、SpawnPointOrange、SpawnPointYellow; public 游戏对象 Mercury;
// Checks if the Spawner is greater than null (There or not) and Instantiates the Object at the Players Position
public void SpawnMercury()
{
if(SpawnPointBlue != null)
{
Instantiate(Mercury, SpawnPointBlue.position, SpawnPointBlue.rotation);
}
if(SpawnPointRed != null)
{
Instantiate(Mercury, SpawnPointRed.position, SpawnPointRed.rotation);
}
if(SpawnPointOrange != null)
{
Instantiate(Mercury, SpawnPointOrange.position, SpawnPointOrange.rotation);
}
if(SpawnPointYellow != null)
{
Instantiate(Mercury, SpawnPointYellow.position, SpawnPointYellow.rotation);
}
如果我理解得很好,您的 SpawnerManager 处于“不要在加载时销毁”并在场景之间保持存在。当您开始游戏时,您已经手动将生成器引用到管理器,并且一切都很好,然后当您转到另一个场景并返回生成器应该在的位置时,不再有对管理器的引用?
如果是这样,这个接缝对我来说很正常,不支持场景之间的引用,当场景被卸载时,引用消失。
如果我误解了什么,我很乐意挖掘一下解决方案