我知道这个问题已经被问了很多,但是我如何从另一个场景的另一个脚本中获取变量?

问题描述 投票:0回答:1

对于我的游戏,我希望能够将第一个场景的难度转移到第二个场景中,我已经尝试查找它,但似乎找不到适合我的解决方案。这不是完全必要的,但我想为其他项目了解它。有人知道怎么做吗?

unity-game-engine variables scene
1个回答
0
投票

简短的回答,你不能。除非两个场景同时加载(如果游戏不需要它,不建议这样做,只是为了获得你的价值)。

您可以通过两种方式实现这一目标:

  1. 使用一种未实例化的静态处理程序或管理器,或在实例化的单例处理程序或管理器中使用静态变量
  2. 使用“全局”游戏对象;好吧,从技术上讲不是全球性的,但它是一个
    DontDestroyOnLoad()
    呼吁的 GO;然后你可以访问它拥有的任何脚本

当然在单例的情况下也经常使用两者的结合。如果您想要最简单的方法,请使用静态变量。请记住,它不会被序列化。所以不要指望在游戏会话之间使用它(例如在重新启动游戏之后)。同样在保存的游戏中序列化它需要手动序列化,与

JsonUtility
提供的不同。

这都是笼统的谈话。

现在,如果你所说的“难度”是指你有一个开始菜单,你问玩家他们希望游戏有多难,他们可以选择简单、中等或困难,那么你需要将它保存在一个普通的公共目录中实例化单例的变量,不是静态的。为什么?你需要保存它,否则当玩家加载保存时,游戏将不知道玩家第一次选择的难度。还要记住,变量需要是一个适当的字段,而不是一个属性。它必须 not

private
protected
并且没有
SerializedField
属性(因为它是隐式的)。

© www.soinside.com 2019 - 2024. All rights reserved.