2016-01-30 36 views
0

我正在尝试为我的LibGdx游戏实现保存功能。这只是为了我的学习目的,所以我试图在移动电话上重新创建Fallout Shelter游戏,但只是作为桌面版本。当我尝试保存或加载我得到这个错误:java.io.NotSerializableException Libgdx

java.io.WriteAbortedException: writing aborted; java.io.NotSerializableException: com.badlogic.gdx.utils.Array 

这里是负载的方法,被称为当游戏启动和结果总是在错误

private void Load() { 
    try { 
     // Open file to read from, named SavedObj.sav. 
     FileInputStream saveFile = new FileInputStream("SaveGame.sav"); 

     // Create an ObjectInputStream to get objects from save file. 
     ObjectInputStream save = new ObjectInputStream(saveFile); 

     energy = (Integer) save.readObject(); 
     System.out.println(energy); 
     food = (Integer) save.readObject(); 
     System.out.println(food); 
     water = (Integer) save.readObject(); 
     System.out.println(water); 
     maxEnergy = (Integer) save.readObject(); 
     System.out.println(maxEnergy); 
     maxFood = (Integer) save.readObject(); 
     System.out.println(maxFood); 
     maxWater = (Integer) save.readObject(); 
     System.out.println(maxWater); 
     caps = (Integer) save.readObject(); 
     System.out.println(caps); 
     maxDwellers = (Integer) save.readObject(); 
     System.out.println(maxDwellers); 
     dwellers = (Array<Dweller>) save.readObject(); 
     //Close the save file 
     save.close(); 
    } catch (Exception exc) { 
     exc.printStackTrace(); // If there was an error, print the info. 
    } 
} 

它总会发现有问题与线的时候我试图加载居民的列表(保存有相同的错误,并在同一行评头论足)

dwellers = (Array<Dweller>) save.readObject(); 

凡然后给出了上面提到的错误。这个类所使用的类是使用java.io.Serializable并且已经实现了,就像其他问题一样,但是我仍然得到了同样的错误,无论我是否实现了它。

+0

除非我遗漏了某些东西,否则'com.badlogic.gdx.utils.Array'类不会实现'Serializable'。哪个类实现了'Serializable'? – Armaiti

回答

1

例外情况是说你试图序列化一个com.badlogic.gdx.utils.Array的实例......而你不能。

根据javadoc,您尝试序列化的Array类未执行Serializable

您尚未提供足够的信息以进行正确的诊断/修复,但我怀疑Dweller直接或间接使用Array类,这是根本原因。可能的解决方案可能是标记Array字段瞬态,和/或实现自定义序列化方法(readObject,writeObject等)。

相关问题