Hello,
Yesterday I was facing really strange problem, and I want to know, why.
I have 2 scripts: ContainerSlot, & ContainerManager.
Firstly I had:
using UnityEngine;
using System.Collections;
using UnityEngine.EventSystems;
using UnityEngine.UI;
public class ContainerSlot: MonoBehaviour, IPointerEnterHandler, IPointerExitHandler, IBeginDragHandler, IEndDragHandler, IDragHandler, IPointerClickHandler {
public ItemType equipmentPart;
public Sprite backgroundImage;
Item item;
public Item Item {
get {
return item;
}
set {
item = value;
}
}
Image icon;
void Start () {
item = new Item();
icon = transform.GetChild(0).GetComponent<Image>();
icon.sprite = backgroundImage;
}
}
And I don’t know why, when I was trying to grab Item in ContainerManager, ContainerSlot returned null all time.
When I changed script to:
using UnityEngine;
using System.Collections;
using UnityEngine.EventSystems;
using UnityEngine.UI;
public class ContainerSlot: MonoBehaviour, IPointerEnterHandler, IPointerExitHandler, IBeginDragHandler, IEndDragHandler, IDragHandler, IPointerClickHandler {
public ItemType equipmentPart;
public Sprite backgroundImage;
Item item = new Item();
public Item Item {
get {
return item;
}
set {
item = value;
}
}
Image icon;
void Start () {
icon = transform.GetChild(0).GetComponent<Image>();
icon.sprite = backgroundImage;
}
}
Everything works fine and ContainerManager can grab Item. I checked in ScriptExecutionOrder and ContainerSlot was BEFORE ContainerManager, so there sould be no problems. I had that problems in some scripts with Lists too, when was initialized in class, everything was ok, if in Start(), null exceptions spam my console.
Now Question. Is it better to always initialize variable/List inside Class to some default value? Or its only me fighting with some unknown issue?