I’m trying to load the values stored on a .json but it gives me an strange error in a certain line.
The error is:
NullReferenceException: Object reference not set to an instance of an object
DisplayShip.LoadValues (.StoredData toLoadData, UnityEngine.GameObject linkedSlot) (at Assets/_Scripts/ShipScripts/DisplayShip.cs:535)
public void LoadValues(StoredData toLoadData, GameObject linkedSlot)
{
isLoaded = true;
functionType = FunctionType.PrefabFolder;
linkedShipSlot = linkedSlot;
storedData = toLoadData.totalStats;
// Load nas partes da nave exceto GUN
for (int i = 0; i < toLoadData.eachPartSpritePath.Length; i++)
{
GameObject newPart = new GameObject(toLoadData.eachPartSpritePath[i]);
newPart.transform.SetParent(transform);
Sprite loadedSprite = Resources.Load<Sprite>("Sprites/" + toLoadData.eachPartSpritePath[i]);
// Debug.Log(Application.dataPath + "/Sprites/" + toLoadData.eachPartSpritePath[i]);
newPart.AddComponent<SpriteRenderer>().sprite = loadedSprite;
newPart.GetComponent<SpriteRenderer>().sortingOrder = toLoadData.eachSpriteSortLayer[i];
newPart.transform.position = toLoadData.eachPartPosition[i];
newPart.transform.eulerAngles = toLoadData.eachPartRotation[i];
}
for(int i = 0; i < toLoadData.eachGunSpritePath.Length; i++)
{
List<GunsBehaviour.LaserType> laserList = new List<GunsBehaviour.LaserType>();
GameObject newGun = new GameObject(toLoadData.eachGunSpritePath[i]);
newGun.transform.SetParent(transform);
Sprite loadedGunSprite = Resources.Load<Sprite>("Sprites/" + toLoadData.eachGunSpritePath[i]);
newGun.AddComponent<SpriteRenderer>().sprite = loadedGunSprite;
newGun.GetComponent<SpriteRenderer>().sortingOrder = toLoadData.eachGunSpriteSortLayer[i];
newGun.transform.position = toLoadData.eachGunPos[i];
newGun.transform.eulerAngles = toLoadData.eachGunRot[i];
for(int o = 0; o < toLoadData.laserList.Length; o++)
{
if (toLoadData.laserList[o].ID == i)
{
laserList.Add(toLoadData.laserList[o]);
}
}
// ============================================== //
/* I already added the script here */ ===> newGun.AddComponent<GunsBehaviour>();
// ============================================== //
newGun.GetComponent<GunsBehaviour>().laserList = new GunsBehaviour.LaserType[laserList.Count];
for(int q = 0; q < newGun.GetComponent<GunsBehaviour>().laserList.Length; q++)
{
Sprite loadedLaserSpritea = Resources.Load<Sprite>("Sprites/" + laserList[q].laserSpritePath);
// ======================ERROR======================== //
newGun.
/*Is pointing to this line the error*/ ===> GetComponent<GunsBehaviour>().
laserList[q].laserSprite
= loadedLaserSpritea;
// ================================================ //
if (newGun.GetComponent<GunsBehaviour>().laserList[q].laserEffectPath != "NULL")
{
Sprite loadedLaserEffectSprite = Resources.Load<Sprite>("Sprites/" +
newGun.GetComponent<GunsBehaviour>().laserList[q].laserEffectPath);
newGun.GetComponent<GunsBehaviour>().laserList[q].laserEffectSprite = loadedLaserEffectSprite;
newGun.GetComponent<GunsBehaviour>().laserList[q].laserSize = laserList[q].laserSize;
newGun.GetComponent<GunsBehaviour>().laserList[q].projectileSpeed = laserList[q].projectileSpeed;
newGun.GetComponent<GunsBehaviour>().laserList[q].projectileDamage = laserList[q].projectileDamage;
newGun.GetComponent<GunsBehaviour>().laserList[q].inclinedAngle = laserList[q].inclinedAngle;
newGun.GetComponent<GunsBehaviour>().laserList[q].isFliped = laserList[q].isFliped;
}
}
}
}