C# 对象数据存储在内部与文件中

C# Object data stored internally vs in files

我正在开发一款包含很多物品的游戏。我想知道在我的程序内部存储对象数据或从文件加载项目列表是否更有效。

例子
[内部]:

Item sword = new Item();
sword.Damage = 40f;
sword.Value = 100;
Weapons.add(sword);

[外部]
items.txt

name:sword
damage:40  
value:100

LoadItems("items.txt");  

A​​ 认为将对象数据存储在文件中可能意味着玩家可以篡改或破坏文件,并且在 IDE 中添加新对象会更容易。一个比另一个更有效率吗?

一个。存储在内存中

优点:

  1. 快速性能。
  2. 验证较少。

缺点:

  1. 如果数据太大,应用程序会占用大量内存。
  2. 应用程序崩溃时数据丢失。

乙。存储在文件

优点:

  1. 不用担心数据大小。如果数据增长,应用程序几乎不会遇到内存问题。
  2. 如果应用程序崩溃,您可以从文件中获取数据。 (如果文件没有损坏)

缺点:

  1. 添加验证。
  2. 正在读取文件并解析。
  3. 添加过程中的异常处理。

这里你的主要因素是数据大小。如果它的小保存在内存中。如果它很大,请将其保存在文件中。

通常数据应该存储在程序之外(而不是硬编码)除了@Jigneshk 所说的问题(这些都是很好的指南),硬编码数据会使开发游戏变得更加困难内容(例如,您必须为游戏中的每把剑编写代码)而外部文件很容易在内容中增长(即使使用相同的程序,作为更新或 mod),所以我建议将所有游戏-内容(统计等)在一个单独的文件中(检查像 XML 或 JSON 这样的结构化文件,即使是 sqlite 数据库也可以工作)

但当然要记住,存储速度较慢(因此您必须在使用前加载),并且您不应该读取 所有 数据,而是加载大块的内容你需要(例如一级)