Я продолжаю получать эту ошибку, когда я нажимаю на Карту, чтобы я мог ее переместить.
NullReferenceException: ссылка на объект не установлена в экземпляр объекта CardProspector.OnMouseUpAsButton() (в Assets/__Scripts/CardProspector.cs: 17) UnityEngine.SendMouseEvents: DoSendMouseEvents (Int32, Int32)
Исключение указывает следующий метод в моем классе CardProspector
:
override public void OnMouseUpAsButton() {
Prospector.S.CardClicked(this); // line 17
base.OnMouseUpAsButton();
}
Но эта переменная должна была быть создана экземпляром моего класса Prospector
, соответствующая часть которой показана ниже:
public class Prospector : MonoBehaviour {
static public Prospector S;
...
...
// Use this for initialization
void awake() {
S = this;
}
...
...
}
Awake() чувствителен к регистру и никогда не будет вызываться в вашем коде.
MonoBehaviour.Awake()
Эта часть сообщения дает информацию о том, где проблема:
(at Assets/__Scripts/CardProspector.cs:17)
Это "17" означает строку 17 вашего файла CardProspector.cs, которая переводится в следующую строку:
Prospector.S.CardClicked(this);
Это предполагает, что статическое свойство "S" равно null - оно не определено.
Поскольку "S" определяется в методе Awake(), вам необходимо вызвать Awake(), прежде чем ссылаться на свойство "S" любым способом.