Full error:
NullReferenceException: Object reference not set to an instance of an object
LoadGameData.LoadData () (at Assets/Skrypt/LoadGameData.cs:54)
LoadGameData.Start () (at Assets/Skrypt/LoadGameData.cs:19)
Code here:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.Xml;
using UnityEngine.UI;
public class LoadGameData : MonoBehaviour
{
public TextAsset GameData;
public GameObject StorePrefab;
public GameObject StorePanel;
public void Start()
{
LoadData();
}
public void LoadData()
{
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.LoadXml(GameData.text);
XmlNodeList StoreList = xmlDoc.GetElementsByTagName("store");
foreach (XmlNode StoreInfo in StoreList)
{
GameObject NewStore = (GameObject)Instantiate(StorePrefab);
store storeobj = NewStore.GetComponent<store>();
XmlNodeList StoreNodes = StoreInfo.ChildNodes;
foreach (XmlNode StoreNode in StoreNodes)
{
if (StoreNode.Name == "name")
{
Text StoreText = NewStore.transform.Find("StoreNameText").GetComponent<Text>();
StoreText.text = StoreNode.InnerText;
}
if (StoreNode.Name == "image")
{
Sprite newSprite = Resources.Load<Sprite>(StoreNode.InnerText);
Image StoreImage = NewStore.transform.Find("ImageButtonClick").GetComponent<Image>();
StoreImage.sprite = newSprite;
}
if (StoreNode.Name == "BaseStoreProfit")
storeobj.BaseStoreProfit = float.Parse(StoreNode.InnerText);
if (StoreNode.Name == "BaseStoreCost")
storeobj.BaseStoreCost = float.Parse(StoreNode.InnerText);
if (StoreNode.Name == "StoreTimer")
storeobj.StoreTimer = float.Parse(StoreNode.InnerText);
}
NewStore.transform.SetParent(StorePanel.transform);
}
}
}
GameData code:
<gamedata>
<store>
<name>Zardzewiałe Akwarium</name>
<BaseStoreCost>2</BaseStoreCost>
<BaseStoreProfit>0,75</BaseStoreProfit>
<StoreTimer>3</StoreTimer>
<image>wood</image>
</store>
<store>
<name>Skórzane Akwarium</name>
<BaseStoreCost>10</BaseStoreCost>
<BaseStoreProfit>3</BaseStoreProfit>
<StoreTimer>6</StoreTimer>
<image>leather</image>
</store>
</gamedata>