SRPG游戏开发(三十五)第八章 游戏中的数据 - 五 测试,导出,导入与编辑器说明(Test, Export, Import and Description)

版权声明:本文为博主原创文章,转载请注明出处。 https://blog.csdn.net/darkrabbit/article/details/84451954

返回总目录

第八章 游戏中的数据(Data in Game)

在之前的章节中,我们进行地图对象的生成,移动等操作。

这一章本来可以进行战斗的编写,不过数据缺失是一个问题。

所以这一章我们先来建立一些数据,以及如何编辑它们,是否需要生成配置文件等。



五 测试,导出,导入与编辑器说明(Test, Export, Import and Description)

这一章,我们主要进行数据的导出,然后将其合并到主项目;并且还有数据编辑器的一些重要说明。


1 测试功能(Testing)

我们可以填充一些需要的数据,进行保存与读取的测试。

首先是xml文件

EditorSrpgDataWindow Xml Testing

  • 图 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文件

EditorSrpgDataWindow txt Testing

  • 图 8.13 EditorSrpgDataWindow txt Testing

保存成文件后:

//id	text
0	测试对话0
1	测试对话1
2	测试对话2
5	测试对话5
8	测试对话8


2 导出资源(Export Package)

选择菜单中的Assets/Export Package...:

Export Package

  • 图 8.14 Export Package

打开Exporting Package面板,选择需要导出的文件:

Exporting Package

  • 图 8.15 Exporting Package

导出时只选择修改过或新增的文件,比如一些dll就不用导出了。

导出的文件后缀名为.unitypackage,想使用的时候只需加载进我们的项目即可。


3 导入资源(Import Package)

打开我们的主项目,选择菜单中的Assets/Import Package/Custom Package...:

Import Package

  • 图 8.16 Import Package

选择我们刚刚导出的文件,可以打开Import Unity 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可在 微软官方文档 查看。


猜你喜欢

转载自blog.csdn.net/darkrabbit/article/details/84451954