嗨,我正在用unity 3d制作一个fps射击游戏,我正试图添加一个游戏中的货币系统,但为了做到这一点,我需要将我的玩家运动脚本上的一个叫做硬币的浮子从关卡场景转移到商店场景,以便它被花费并显示在屏幕上作为一个UI dose anybody know how I can do this thank you so much for your help😁。
不要在脚本中存储不属于它们的变量。这个问题有多种解决方案。
ScriptableObject
包含需要转移的变量。它由你在编辑器中实例化,然后作为资产分配给你的玩家预制件。玩家不需要在播放器本身设置变量,而只需要在这个存储空间中设置一个变量。这个存储可以是任何东西,从单个变量(请看此视频)到像Unitys这样的大系统。平铺图系统.DontDestroyOnLoad(gameObject)
在其 Start
方法。此外,你还可以把它变成一个单人,从任何地方访问它。作为参考,请看 本回答 从游戏开发堆栈交流。说实话,我总是尝试使用第一种方法。如果您想让一些变量在 "游戏状态 "中持久存在(在虚幻中是这么叫的),那么您可以在外部创建它并在整个会话中引用它。其实有很多因地制宜的方法,没有真正的对与错,但是你应该始终记住,一个类应该只服务于一个单一的目的,一个移动玩家和存储当前统计的玩家脚本(应该比玩家本身的寿命更长)通常是一个糟糕的方法。