我正在學習一個教程,我需要保存屬於一個對象的精靈。 我正在創建一個項目的數據庫,當然想要正確的圖像來與該項目。這是我建立了我的項目數據庫:Unity:保存/加載精靈作爲Json
ItemObject
[System.Serializable]
public class ItemObject{
public int id;
public string title;
public int value;
public string toolTip;
public bool stackable;
public string category;
public string slug;
public Sprite sprite;
public ItemObject(int id, string title, int value, string toolTip, bool stackable, string category, string slug)
{
this.id = id;
this.title = title;
this.value = value;
this.toolTip = toolTip;
this.stackable = stackable;
this.category = category;
this.slug = slug;
sprite = Resources.Load<Sprite>("items/" + slug);
}
的ItemData
[System.Serializable]
public class ItemData {
public List<ItemObject> itemList;
}
我然後保存/載入ItemData.itemList。這很好。正如你所看到的,我使用「slug」來加載我的物品的精靈,slug基本上是一個代碼友好的名字(例如:golden_hat),然後我的Sprite的名字相同。
這也很好,但Unity會保存Sprite InstanceID,它始終會在啓動時更改,所以如果我退出Unity並加載數據,它將會得到錯誤的圖像。
我的JSON:
{
"itemList": [
{
"id": 0,
"title": "Golden Sword",
"value": 111,
"toolTip": "This is a golden sword",
"stackable": false,
"category": "weapon",
"slug": "golden_sword",
"sprite": {
"instanceID": 13238
}
},
{
"id": 1,
"title": "Steel Gloves",
"value": 222,
"toolTip": "This is steel gloves",
"stackable": true,
"category": "weapon",
"slug": "steel_gloves",
"sprite": {
"instanceID": 13342
}
}
]
}
所以我猜測它不會工作到做這種方式,有一些其他的方式來保存的Json雪碧?或者我必須每次使用我的「slug」在運行時加載正確的Sprite?
你**不應**在遊戲中保存精靈。您應該使用AssetBundles或資源API。至於保存它,保存AssetBundles或[資源](https://stackoverflow.com/a/41326276/3785314)文件夾的路徑** – Programmer
@Programmer謝謝,我現在保存資源文件夾的路徑。並開始尋找AssetBundles。 – Majs