問題は、UIテキストを使用するときはいつでもint値を文字列に変換する必要があるため、単にText私が持っていたInt変数の値をUIテキストオブジェクトで使用できるようにしました。Unityを5.3から5.6にアップグレードしました。現在、null参照例外が発生します。
それは次のようになります。
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)
をだから、私はこれが前にうまく機能するために使用言ったように、ここでSTATのためのコードスニペットですが、問題は、私はランダムな値を作成する方法で生成されるようですジェネレータ:
//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;
}
}
プリント()各ケースの端部には、私はそれもdoesntのコンソールで統計情報を印刷するゲームをコンパイルするたびにUI要素を、使用する前にコンソールで最初の試験に使用しました。 、
public Text strengthText;
public Text dexterityText;
というように、私は彼らがに何かに=にする必要があります:私はテキスト変数に値を割り当てられていた場合
誰かが私がしたすべては、次のようにそれらを初期化した、いや、私はhaventは、尋ねましたエラーを避ける?
実際に 'Text'クラスのインスタンスを渡していて、nullだけではないのですか? – Serlite
'textVar'がnullで渡されているときは、コードを後にして、その値がどこから来ているのかを確認する必要があります。それは問題がどこにあり、それが私たちに示す必要があるコードです。 –
ええ、デバッグウィンドウをさらにチェックしたところ、null値はどこから値が生成されているのでしょうか投稿を編集してください! –