У меня есть класс Item
нижеПередача Sprite в качестве аргументов конструктора в Unity
[System.Serializable]
public class Item
{
public string itemName;
public Sprite icon;
public float price = 1f;
public Item(string newItemName, Sprite newIcon, float newPrice)
{
this.itemName = newItemName;
this.icon = newIcon;
this.price = newPrice;
}
}
Затем наполнение Списка Пункта во время запуска на другом классе и вот код.
void Start() {
itemList = new List<Item>();
TextAsset asset = Resources.Load(Path.Combine("Maps", "items")) as TextAsset;
var items = JsonHelper.FromJson<Item>(asset.text);
Debug.Log("" + items.Length);
for(int i= 0; i < items.Length; i++)
{
itemList.Add(new Item(items[i].itemName, Resources.Load<Sprite>(items[i].icon), items[i].price));
}
RefreshDisplay();
}
А вот мой items.txt
файл внутри Assets/Resources/Maps/
{"Items":[{
"id": "1",
"itemName": "Candy",
"price": "2",
"icon" : "ic_candy"
},
{
"id": "2",
"itemName": "Coin",
"price": "10",
"icon" : "ic_coin"
},
{
"id": "3",
"itemName": "Bomb",
"price": "8",
"icon" : "ic_bomb"
}]
}
Я получаю ошибку говоря
Аргумент 1: Не удается преобразовать из 'UnityEngine.Sprite' в 'строка'
по адресу itemList.Add(new Item(items[i].itemName, Resources.Load<Sprite>(items[i].icon), items[i].price));
Я попытался отправить имя пути (items[i].icon
) спрайта конструктору, но все же получил ошибку.
Что может быть исправить?
Единственное, что я вижу нечетным, это то, что вы используете тот же (?) Класс для списка Json и itemList. Это не должно быть возможным. –
@JohanLindkvist Я следил за этим из Unity Live Training. Можете ли вы объяснить мне, почему? –