【问题标题】:Losing references after reloading the scene, even though they exist again重新加载场景后丢失引用,即使它们再次存在
【发布时间】:2022-01-10 18:35:13
【问题描述】:

所以基本上我在移动设备上创建了一个太空沙盒游戏,您可以在其中创建自己的宇宙。在游戏开始时,您可以选择您的火箭。每个火箭都有自己的相机、播放器和生成器。不是最好的解决方案,但它有效。在玩家选择了他的火箭后,我摧毁了非活动的产卵器,所以它们不起作用。 我的问题是当退出场景并选择不同的火箭并重复该过程时,带有所有 Spawner 的所有引用的 SpawningManager 丢失了对它们的引用。即使我重新加载了场景,所有引用仍然丢失。 对不起,如果这很难理解,但很难解释。

这是销毁spawner的部分代码(用颜色表示)

if (BlueSelected == true)
        {
            Destroy(RedSpawner);
            Destroy(OrangeSpawner);
            Destroy(YellowSpawner);
            Destroy(GreenSpawner);
        }

以及行星生成器之一的一部分(以颜色表示)

{ 公共变换 SpawnPointBlue、SpawnPointRed、SpawnPointOrange、SpawnPointYellow; 公共游戏对象 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);
    }

【问题讨论】:

    标签: c# unity3d reference spawn destroy


    【解决方案1】:

    如果我理解得很好,您的 SpawnerManager 处于“不要在加载时破坏”并在场景之间保持存在。当您开始游戏时,您已经手动将生成器引用到管理器并且一切都很好,然后当您转到另一个场景并返回生成器应该在的位置时,没有更多对管理器的引用?

    如果是这样,这对我来说很正常,不支持场景之间的引用,当卸载场景时,引用消失。

    如果我误解了什么,我会很高兴地挖掘一下解决方案

    【讨论】:

      猜你喜欢
      • 2013-11-15
      • 1970-01-01
      • 2020-05-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-24
      相关资源
      最近更新 更多