【问题标题】:How to save a float between scenes in unity如何统一保存场景之间的浮动
【发布时间】:2020-04-08 21:53:08
【问题描述】:

您好,我对代码很陌生,而且我真的很挣扎。我只是想为二十一点游戏创建一个简单的投注系统,您在其中下注并保存价值,然后将其带到我的下一个场景,即游戏场景。所以基本上我在一个名为 BetScene 的场景中创建了一个按钮,当按下按钮时,它会将 25 添加到 betamount 并从 playeramount 中删除 25。一旦玩家对他们下的钱感到满意,他们就会按下第二个按钮 PlaceBet。当按下该按钮时,游戏场景会加载,所以我想做的是保存放置的数量并将其显示在游戏场景中。希望这是有道理的我真的需要帮助我真的很想学习谢谢

【问题讨论】:

  • 不可能知道你在问什么。您是否正在尝试将数据保存到服务器?

标签: c# unity3d


【解决方案1】:

好的,首先:这个场景听起来你不应该使用多个场景,所以我想说“在这种情况下重新考虑你的架构和场景流程”。但我也在这里,回答你的问题,所以让我们这样做吧。

在场景之间共享数据的一种好方法是使用ScriptableObject 作为数据容器。您只需创建要在多个场景中使用的数据类,然后创建 ScriptableObject 的实例作为资产文件夹中的资产。
然后可以将此资产分配给需要使用它进行数据传输的所有组件。它基本上就像在一个场景中绘制并从另一个场景中读取的纹理。

您甚至可以通过使用这些ScriptableObject 资产作为变量创建一种“数据绑定”来改进这一点。 2017 年 Unitys YouTube 频道上有关于该主题的精彩讨论:Unite Austin 2017 - Game Architecture with Scriptable Objects

【讨论】:

  • 感谢您的帮助,请问您是否可以将您对我说的内容哑口无言?我无意冒犯你
  • 别抱歉,我们都是从某个时候开始的。我没有给你一个涵盖所有内容的完整文章,而是给你this link统一文档并建议你通读所有文章。我对你说的一切,都在那里解释(以某种方式)。我为什么要这样做?因为当你让他们做某事时,你需要知道你使用的工具是如何工作的。编程不仅仅是编写代码,还包括理解和扩展现有的软件架构。
【解决方案2】:

解决方案 1:使用PlayerPrefs。

PlayerPrefs.SetFloat("HIGHSCORE", 123.45f);
float highscore = PlayerPrefs.GetFloat("HIGHSCORE");

解决方案 2:使用Static Instance

public class MyClass: MonoBehavior {
  public static MyClass Instance;
  public float highscore;
  void Awake() {
    Instance = this;
    DontDestroyOnLoad(this);
  }
}
...
public class YourClass: MonoBehavior {
  void YourFunction() {
    print(MyClass.Instance.highscore);
  }
}

【讨论】:

    猜你喜欢
    • 2021-05-22
    • 1970-01-01
    • 1970-01-01
    • 2020-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多