好的問題是,無論何時我想使用UI文本,我需要將我的int值轉換爲字符串,所以我提出了一個方法,變量,並給它它的Int變量的值,因此它可以被UI文本對象使用。我將Unity從5.3升級到5.6,現在我得到空引用異常
它看起來像這樣:
void setText(Text textVar, int valueVar)
{
textVar.text = valueVar.ToString();
}
很簡單吧?以及..即時得到錯誤:
NullReferenceException: Object reference not set to an instance of an object
UnityStandardAssets.Characters.FirstPerson.FirstPersonController.setText (UnityEngine.UI.Text textVar, Int32 valueVar) (at Assets/Standard Assets/Characters/FirstPersonCharacter/Scripts/FirstPersonController.cs:1617)
UnityStandardAssets.Characters.FirstPerson.FirstPersonController.generateRandomStat (Int32 stat) (at Assets/Standard Assets/Characters/FirstPersonCharacter/Scripts/FirstPersonController.cs:318)
UnityStandardAssets.Characters.FirstPerson.FirstPersonController.charCram() (at Assets/Standard Assets/Characters/FirstPersonCharacter/Scripts/FirstPersonController.cs:221)
UnityStandardAssets.Characters.FirstPerson.FirstPersonController.Start() (at Assets/Standard Assets/Characters/FirstPersonCharacter/Scripts/FirstPersonController.cs:1715)
所以看起來在我創建隨機值的方法產生的問題,但就像我說這個很好用上班前,這裏是對統計的代碼片段發生器:
//method to generate a random stat from 3 to 18
public void generateRandomStat(int stat)
{
int rng = Random.Range(3, 18);
switch (stat)
{
case 0:
strength = rng;
setText(strengthText, strength);
print(strength);
break;
case 1:
dexterity = rng;
setText(dexterityText, dexterity);
print(dexterity);
break;
case 2:
intelligence = rng;
setText(intelligenceText, intelligence);
print(intelligence);
break;
case 3:
wisdom = rng;
setText(wisdomText, wisdom);
print(wisdom);
break;
case 4:
constitution = rng;
setText(constitutionText, constitution);
print(constitution);
break;
case 5:
charisma = rng;
setText(charismaText, charisma);
print(charisma);
break;
case 6:
luck = rng;
setText(luckText, luck);
print(luck);
break;
case 7:
willpower = rng;
setText(willpowerText, willpower);
print(willpower);
break;
}
}
打印()在每種情況下的端部被用於第一測試在控制檯中使用的UI元素,每當我編譯遊戲它不即使在控制檯打印統計之前。
有人問我是否已經賦值給文本變量,沒有我還沒有,我所做的就是它們初始化如下:
public Text strengthText;
public Text dexterityText;
等等,做我需要讓他們=要的東西避免錯誤?
你確定你確實傳入了一個'Text'類的實例,而不僅僅是null? – Serlite
'textVar'被傳遞爲null,您需要向後跟隨代碼並查看該值來自哪裏。那就是問題所在,那就是你需要向我們展示的代碼。 –
是的,我進一步檢查了調試窗口,似乎空值來自我生成的值生病編輯帖子! –