java - 将 BooleanArray 保存在 LibgGDX 首选项中

标签 java android arrays libgdx sharedpreferences

我的 LibgGDX 游戏中有一个很长的 BooleanArray,为了将其保存在我的 Preferences 中,我这样做:

static Preferences prefs;

public static void putMyArray (BooleanArray booleanArray, String string){
    for(int i=0; i < booleanArray.size;i++){
        prefs.putBoolean( string+i, booleanArray.get(i));
    }
}

此方法适用于小型数组,但对于我的情况,大小为 100+。

请帮忙,还有其他办法吗?

最佳答案

如果你想要它 super 紧凑,你可以使用 Kryo 库将其转换为二进制。然后,您可以将其保存为本地文件,或者如果您使用 ByteArrayOutputStream,则将其转换为字符串首选项。

已经有一个 library with serializers for LibGDX Kryo 中的数据类。

将库添加到 build.gradle 中的核心项目中:

compile "com.cyphercove.gdx:gdxtokryo:1.1.1"

保存到文件:

kryo = new Kryo();
kryo.setRegistrationRequired(true);
GdxToKryo.registerGroup(kryo, 0);
Output output = new Output(Gdx.files.local("mySave.bin").write(false));
kryo.writeObject(output, myBooleanArray);
output.close();

读取数据:

kryo = new Kryo();
kryo.setRegistrationRequired(true);
GdxToKryo.registerGroup(kryo, 0);
Input input = new Input(Gdx.files.local("mySave.bin").read());
BooleanArray myBooleanArray = kryo.readObject(input, BooleanArray.class);
input.close();

关于java - 将 BooleanArray 保存在 LibgGDX 首选项中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49059055/

相关文章:

java - JTextField 上的 FocusListener 不起作用

java - 设置屏幕中间2帧的位置

java - 无法使用桌面运行桌面应用程序 :run LIBGDX

c# - 如何比较数组中的值

javascript - 现代javascript中的数组单子(monad)是什么?

java - 从android中的并行线程中的大量文本文件加载数据

java - 在 XML 中设置 Button View 的背景会使按钮不可单击

android - 如何防止弹出菜单在复选框单击时关闭

android - PreferenceScreen 之间的分隔符

javascript - 使用 lodash 可以使用多个参数对对象数组进行排序