I’m managing to grab the data I need out of an XML file, and since I’m working in C# I’m having to set the length of the array by reinitialising it. The problem seems to be that the array isn’t done initialising by the time I try to add some data to it (I’m getting a NullReferenceException).
I’m pretty sure of this just because if I try to change any part of the array in Update I’ll get more NullReferenceExceptions and then it will eventually work. Any suggestions? Here’s what I’m using:
using UnityEngine;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Xml;
public class MyDataTesting : MonoBehaviour
{
public MyClass[] myClasses;
private XmlDocument xmlDoc;
private string url;
private WWW www;
private string xml;
IEnumerator Start()
{
url = "myurl";
www = new WWW(url);
yield return www;
xml = www.text;
LoadDatabase();
}
void LoadDatabase()
{
xmlDoc = new XmlDocument();
xmlDoc.LoadXml(xml);
XmlNode root = xmlDoc.FirstChild;
if(root.HasChildNodes)
{
myClasses = new MyClass[root.ChildNodes.Count];
for(int i=0; i<root.ChildNodes.Count; i++)
{
myClasses_.name = root.ChildNodes*.Attributes["name"].Value;*_
* }*
* }*
* }*
}
[Serializable]
public class MyClass
{
* public string name;*
* public int price;*
}
Haha, "atomic operation". It's just really weird that if I spam myClasses[0].name = "TestName" then it will update the entry to "TestName" after 4 or 5 null reference exceptions occurring first. Anyway, I'll give List a try instead. Update: List works perfectly. Thanks @Eric5h5!
– Bicko