如何从Unity中的另一个场景加载Canvas?

时间:2017-07-11 10:58:45

标签: unity3d canvas find load scene

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

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

3 个答案:

答案 0 :(得分:1)

将要切换的画布另存为'预制件'在您的资产文件夹中。

如果您在没有携带最后一个场景中的数据的情况下加载新场景,那么只需使用编辑器在该场景中设置画布。

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

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

希望有所帮助。

答案 1 :(得分:0)

有很多解决方案:

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

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

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

答案 2 :(得分:0)

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

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

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