1. 程式人生 > >SRPG遊戲開發(三十五)第八章 遊戲中的資料 - 五 測試,匯出,匯入與編輯器說明(Test, Export, Import and Description)

SRPG遊戲開發(三十五)第八章 遊戲中的資料 - 五 測試,匯出,匯入與編輯器說明(Test, Export, Import and Description)

返回總目錄

第八章 遊戲中的資料(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可在 微軟官方文件 檢視。