SRPG游戏开发(三十五)第八章 游戏中的数据 - 五 测试,导出,导入与编辑器说明(Test, Export, Import and Description)
第八章 游戏中的数据(Data in Game)
在之前的章节中,我们进行地图对象的生成,移动等操作。
这一章本来可以进行战斗的编写,不过数据缺失是一个问题。
所以这一章我们先来建立一些数据,以及如何编辑它们,是否需要生成配置文件等。
文章目录
五 测试,导出,导入与编辑器说明(Test, Export, Import and Description)
这一章,我们主要进行数据的导出,然后将其合并到主项目;并且还有数据编辑器的一些重要说明。
1 测试功能(Testing)
我们可以填充一些需要的数据,进行保存与读取的测试。
首先是xml
文件
- 图 8.12 EditorSrpgDataWindow Xml Testing
保存之后的文件(仅供参考,源码数据结构可能进行修改):
<?xml version="1.0" encoding="utf-8"?>
<ItemInfoConfig>
<datas>
<ItemInfo id="0" name="短剑" icon="W_Sword001" price="500">
<Weapon weaponType="Sword" level="3" attack="4" minRange="1" maxRange="1" weight="6" durability="50">
<hp>0</hp>
<mp>0</mp>
<fightProperties str="0" mag="0" skl="0" spd="0" def="0" mdf="0" />
<luk>0</luk>
<movePoint>0</movePoint>
</Weapon>
</ItemInfo>
<ItemInfo id="1" name="长剑" icon="W_Sword011" price="750">
<Weapon weaponType="Sword" level="4" attack="6" minRange="1" maxRange="1" weight="10" durability="50">
<hp>0</hp>
<mp>0</mp>
<fightProperties str="0" mag="0" skl="0" spd="0" def="0" mdf="0" />
<luk>0</luk>
<movePoint>0</movePoint>
</Weapon>
</ItemInfo>
</datas>
</ItemInfoConfig>
其次是txt
文件
- 图 8.13 EditorSrpgDataWindow txt Testing
保存成文件后:
//id text
0 测试对话0
1 测试对话1
2 测试对话2
5 测试对话5
8 测试对话8
2 导出资源(Export Package)
选择菜单中的Assets/Export Package...
:
- 图 8.14 Export Package
打开Exporting Package
面板,选择需要导出的文件:
- 图 8.15 Exporting Package
导出时只选择修改过或新增的文件,比如一些dll
就不用导出了。
导出的文件后缀名为.unitypackage
,想使用的时候只需加载进我们的项目即可。
3 导入资源(Import Package)
打开我们的主项目,选择菜单中的Assets/Import Package/Custom Package...
:
- 图 8.16 Import Package
选择我们刚刚导出的文件,可以打开Import Unity Package
面板:
- 图 8.17 Import Unity Package
导入的时候,发现了一个错误,把SRPG_Dev
写成了SPRG_Dev
,这就很尴尬了,赶紧改回来,重新导出导入。
4 主项目测试(Test in Main Project)
我们随便编写一个脚本来测试它,注意我们保存文件的路径:
private void Start()
{
// 我们保存配置文件根目录
ConfigLoader.rootDirectory = Application.streamingAssetsPath + "/Config";
CharacterInfoConfig character = ConfigFile.Get<CharacterInfoConfig>();
Debug.Log(character[0].name);
TextInfoConfig text = ConfigFile.Get<TextInfoConfig>();
TextInfo info = text[5];
Debug.Log(info.id + ": " + info.text);
}
能够成功打印即可。
5 关于数据编辑器的最终说明(About Data Editor)
在Editor中如何显示这些数据是非常重要的,我们的项目够用了;但在某些大型项目时需要详细的显示与说明,还有可能会要求显示图表(例如结构图)等,如果显示的不清楚,可能会带来一些麻烦。
一些常见的方式:
-
使用第三方编辑生成工具;
-
由开发者编写编辑器(例如本项目,或例如使用C# winform);
-
使用在线编辑生成工具(例如一些xml, json的编辑网站)。
本项目中,所有的配置文件与数据文件都是单一文件,但很多正式项目中一般情况都是分割文件(partial class
)。这是因为在一般情况下,这些文件是由第三方生成,或者策划的编程能力不会特别强,只能给出数据结构,而相应的格式化等代码需要我们编写。
举例来说,策划给出的文件(可能是策划编写,可能是由工具生成)一般为:
public partial class MyConfigClass
{
public MyInfo[] datas;
}
public partial class MyInfo
{
public int id;
public string value;
}
而开发者,拿到文件后需要进行补充:
[Serializable]
public partial class MyConfigClass : MyBaseConfigClass, IMyConfigInterface
{
// other property
public MyInfo this[int id]
{
get { return Array.Find(datas, d => d.id == id); }
}
// other method
}
[Serializable]
public partial class MyInfo : IMyFormatInterface
{
// other property
public void MyFormatData(object data)
{
// format code
}
// other method
}
这些全部都是看项目的实际要求。关于partial
可在 微软官方文档 查看。