即使在单独的游戏会话之后,我如何保持变量的一致性?
Posted
技术标签:
【中文标题】即使在单独的游戏会话之后,我如何保持变量的一致性?【英文标题】:How do I keep a variable consistant even after seperate play sessions? 【发布时间】:2017-12-28 17:25:21 【问题描述】:我有一个变量area
存储一个数字。
当应用重新启动时,它会重置回原来的值。 area
关闭后如何保持持久性?
我正在使用适用于 android 的 Flash CS6
【问题讨论】:
将变量存储在共享对象help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/… 【参考方案1】:您必须保存变量。有多种方法可以做到这一点,但使用 SharedObject 是最简单的 IMO。
首先,您实际上并没有创建SharedObject
类的新实例,而是调用静态函数getLocal
,这会设置您的变量。所以在你的程序开始附近的某个地方,你会想要这样的东西:
var gameSave:SharedObject = SharedObject.getLocal("gameSave");
如果不存在,这将创建一个新的本地持久共享对象,或者它会在您的计算机上获取具有相同初始化名称(“gameSave”)的对象。这样您就可以在多个游戏中访问保存的变量。
现在要保存变量,您只需在共享对象上使用data
Object 并向其写入值,然后在完成写入值后调用函数flush
以立即将共享对象保存到您的计算机.
因此,保存您的区域价值看起来像这样:
gameSave.data.area = Main.area;
gameSave.flush();
之后,您需要将 area
值设置为游戏启动时保存的值:
if (gameSave.data.area !== undefined) Main.area = gameSave.data.area;
我们检查该值是否为undefined
,因为如果您是第一次玩游戏并且该区域尚未保存,它可能还不存在。
如果您想扩大 this 的范围并保存更多值,最后一件事:您只能将特定值写入共享对象。我理解它的方式是您只能编写某些类类型和原语。如果您尝试编写任何不是原始类或异常类的东西,它会自动将该项目转换为Object
,并且它或多或少变得无用。它可以接受并且您可能会使用最多的类是:int
、uint
、Number
、String
、Boolean
、Object
和 Array
。它还有一些其他的,比如ByteArray
和XML
,但你要么根本不使用它们,要么不经常使用它们。如果您想保存任何其他类类型,您必须自己添加该功能。
【讨论】:
以上是关于即使在单独的游戏会话之后,我如何保持变量的一致性?的主要内容,如果未能解决你的问题,请参考以下文章
Pygame - 在保持单独功能的同时创建具有相同功能的多行