当前位置: 首页 > 面试题库 >

存储游戏数据的最佳方法?(图像,地图等)

袁泰平
2023-03-14
问题内容

我正在创建一个基本的2D游戏(以及游戏引擎),目前正在开发数据的文件格式。当然,要运行此游戏,我将需要缓存。我发现将游戏的所有数据都放在一个文件中是非常不专业的(只要文件采用某种缓存格式,就不一定要保存在单个文件中)。

所以这就是为什么我来这里问。我当时想做一个zip文件,但我觉得那根本不是最好的方法。我也在考虑做另一个二进制写程序,该写程序将具有标题(文件的类型,“位置”)和每个文件的封闭标记,以便于解释。但是我觉得那太低效了。

所以,请问您有什么想法吗?

注意:此游戏引擎实际上仅用于学习目的。

tl; dr我需要一种有效的方法来存储我正在制作的游戏中的图像等数据。


问题答案:

您可以将任何对象存储为.dat文件:

public class MyGame implements Serializable 
{ 
    private static void saveGame(ObjectType YourObject, String filePath) throws IOException 
    { 
        ObjectOutputStream outputStream = null; 
        try 
        { 
            outputStream = new ObjectOutputStream(new FileOutputStream(filePath)); 
            outputStream.writeObject(YourObject); 
        } 
        catch(FileNotFoundException ex) 
        { 
            ex.printStackTrace(); 
        } 
        catch(IOException ex) 
        { 
            ex.printStackTrace(); 
        } 
        finally 
        { 
            try 
            { 
                if(outputStream != null) 
                { 
                    outputStream.flush(); 
                    outputStream.close(); 
                } 
            } 
            catch(IOException ex) 
            { 
                ex.printStackTrace(); 
            } 
        } 
    }

    public static ObjectType loadGame(String filePath) throws IOException 
    { 
        try 
        { 
            FileInputStream fileIn = new FileInputStream(filePath); 
            ObjectInputStream in = new ObjectInputStream(fileIn); 
            return (ObjectType) in.readObject(); 
        } 
        catch(FileNotFoundException ex) 
        { 
            ex.printStackTrace(); 
        } 
        catch(IOException ex) 
        { 
            ex.printStackTrace(); 
        } 
    } 
}


 类似资料:
  • 问题内容: 我需要做的是存储一对一的映射。数据集包含大量相同类型的键值对(10M +)。例如,可以使用Java中的HashMap对象的单个实例来存储此类数据。 第一种方法是存储许多键值对,如下所示: 第二种选择是使用单个“哈希”: Redis的哈希有一些方便的命令(,,等),他们不污染密钥空间,所以这看起来像一个更好的选择。但是,使用此方法时是否有任何性能或内存方面的考虑? 问题答案: 是的,正如

  • 问题内容: 在MySQL数据库中存储IP地址的最佳字段类型和长度是什么? IPv6呢? 问题答案: 将IP存储为,然后使用和功能存储/检索IP地址。 样例代码:

  • 问题内容: 我上了一堂课,想跟踪学生的统计数据。我打算稍后制作一个GUI来处理这些数据。 我的主要问题是:保存和以后检索此数据的最佳方法是什么? 我已经读过关于pickle和JSON的文章,但是我并没有真正了解它们的工作方式(尤其是关于它们如何保存数据的信息,例如哪种格式和位置)。 问题答案: 对于持久性数据(存储有关学生的信息),数据库是一个不错的选择。如前所述,Python附带了Sqlite3

  • 问题内容: 我希望在学习快速的过程中开发一个库存/物品库存应用程序。它基本上是具有项目名称,数量和位置的东西。 例如。 25号工作货车灯泡 开关,6,仓库 当用户输入此数据并按下按钮时,什么是存储此数据并在以后检索的最佳方法。我知道我可以将此附加到数组并显示该数组,但是如果应用程序关闭,该怎么办? 我应该在学习数据库存储吗?我可以将数据保存到手机吗? 问题答案: 如果要存储的数据很少且不敏感,则可

  • 问题内容: Angular的ng- src会保留以前的模型,直到它在内部预加载图像为止。我在每个页面上的横幅使用不同的图像,当我切换路线时,我更改主视图,保留标题视图,仅在拥有它时更改bannerUrl模型。 这导致在加载新的横幅图像时看到先前的横幅图像。 令我惊讶的是,目前还没有指令,但是我想在尝试构建指令之前先进行讨论。 我想做的是在自定义属性上设置横幅模型。喜欢: 然后$ scope.wat

  • 问题内容: 我在数组上进行映射,对于新对象的返回值之一,我需要进行异步调用。 该功能的实现将类似于 我不清楚做到这一点的最佳方法是什么…承诺?嵌套的回调?在ES6或ES7中使用某些东西,然后与Babel进行转换? 目前实现此目的的最佳方法是什么? 谢谢! 问题答案: 一种方法是(ES6)。 该答案将在Node 4.0+中起作用。较旧的版本将需要Promise polyfill或库。我还使用了ES6