【问题标题】:How would I load a Canvas from another scene in Unity?如何从 Unity 中的另一个场景加载 Canvas?
【发布时间】:2017-07-11 23:34:59
【问题描述】:

我试图在 Unity 中的这个脚本中执行的是加载不同的场景,并从该场景中找到画布并启用它。我已经知道如何在同一场景中启用画布,但问题是如何从另一个场景中找到并启用画布。

我试过 SceneManager.LoadScene(scenename);改变场景所以我应该添加或修改什么?有人可以帮我吗?

【问题讨论】:

  • 有两种解决方案: 1) 使用 MonoBehavior 的 DontDestroyOnLoad(transform.gameObject) 作为您需要在下一个场景中的画布; 2)将当前场景的游戏对象(画布)保存在某处并再次加载并在下一个场景中重新创建为序列化等; 3) 与#2 相同,但将所需数据保存在局部变量中。
  • @KamikyIT 这应该是一个答案! :)

标签: unity3d canvas find load scene


【解决方案1】:

将要切换到的画布保存为资产文件夹中的“预制件”。

如果您正在加载一个新场景而没有从上一个场景中携带数据,那么只需使用编辑器在该场景中设置画布即可。

如果您要携带数据,或者可能是玩家游戏对象,那么您可以实例化您需要的画布预制件。这将在新场景中创建它,您可以从您选择实例化预制件的任何位置获得对它的引用。

或者,您可以在同一个游戏对象上拥有多个画布,并根据需要打开或关闭它们。对菜单非常有用。

希望对您有所帮助。

【讨论】:

    【解决方案2】:

    有很多解决方案:

    1. 将 MonoBehavior 的 DontDestroyOnLoad(transform.gameObject) 用于您的画布,您需要在下一个场景中;您可以在 Google 中找到很多示例。这是链接:https://docs.unity3d.com/ScriptReference/Object.DontDestroyOnLoad.html

    2. 将当前场景的游戏对象(画布)保存在某处并再次加载它并在下一个场景中重新创建为序列化等;

    3. 与 #2 相同,但将所需数据保存在局部变量中。

    【讨论】:

      【解决方案3】:

      我有两种方式理解你的问题。

      您要么希望将具有编辑器中定义的所有参数的游戏对象复制到另一个场景中。 最好的方法显然是使用预制件。 (where to start?)

      如果您想在运行时修改游戏对象及其所有参数后复制它们,那么您可以使用DontDestroyOnLoad(),但这意味着源场景必须在目标场景之前至少加载一次。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-09-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多