即使在单独的游戏会话之后,我如何保持变量的一致性?

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”)的对象。这样您就可以在多个游戏中访问保存的变量。

现在要保存变量,您只需在共享对象上使用dataObject 并向其写入值,然后在完成写入值后调用函数flush 以立即将共享对象保存到您的计算机.

因此,保存您的区域价值看起来像这样:

gameSave.data.area = Main.area;
gameSave.flush();

之后,您需要将 area 值设置为游戏启动时保存的值:

if (gameSave.data.area !== undefined) Main.area = gameSave.data.area;

我们检查该值是否为undefined,因为如果您是第一次玩游戏并且该区域尚未保存,它可能还不存在。

如果您想扩大 this 的范围并保存更多值,最后一件事:您只能将特定值写入共享对象。我理解它的方式是您只能编写某些类类型和原语。如果您尝试编写任何不是原始类或异常类的东西,它会自动将该项目转换为Object,并且它或多或少变得无用。它可以接受并且您可能会使用最多的类是:intuintNumberStringBooleanObjectArray。它还有一些其他的,比如ByteArrayXML,但你要么根本不使用它们,要么不经常使用它们。如果您想保存任何其他类类型,您必须自己添加该功能。

【讨论】:

以上是关于即使在单独的游戏会话之后,我如何保持变量的一致性?的主要内容,如果未能解决你的问题,请参考以下文章

如何让 SignalR 连接尊重会话超时

Pygame - 在保持单独功能的同时创建具有相同功能的多行

销毁会话,但保留一个变量集

如何保持不同会话变量的超时时间不同

即使在 Flask 中关闭浏览器后,如何将一个会话变量存储一段时间?

Spring-security:即使在 JVM 重启后也能保持活动会话