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
可在 微軟官方文件 檢視。