私は、キーが押されるたびに新しい値でヘルスバーを再描画するように設計された、オンラインで見つかった簡単なスクリプトを使って作業しています。ここでUnity ScriptのC#Null参照例外
はスクリプトです:
using UnityEngine;
using System.Collections;
public class Player : MonoBehaviour {
public Stat health;
public void Awake()
{
//Initializes the stats
health.Initialize();
}
// Update is called once per frame
public void Update()
{
//Demonstrates the usage of each bar
//Takes the stats and reduces or increases it for demonstration
if (Input.GetKeyDown(KeyCode.W))
{
health.CurrentValue += 10;
}
if (Input.GetKeyDown(KeyCode.Q))
{
health.CurrentValue -= 10;
}
}
}
私はこれを実行すると、私は例外を取得...誰もがこの問題を解決する方法を
NullReferenceException: Object reference not set to an instance of an object
Player.Awake() (at Assets/Scripts/Player.cs:11)
を知っていますか?スクリプトリリーサによれば、このコードは変更なしでそのまま使用できます。
あなたは本当にあなたの '健康 'メンバーを構築しているようです。ヌルオブジェクトで 'Initialize()'メソッドを呼び出すと、null参照例外が返されます – Icepickle
'= new Stat()'を試しましたが動作しません。 – Nic
'あなたは 'new'キーワードを使ってMonoBehaviourを作成しようとしています。これは許可されていません。 MonoBehavioursは、AddComponent()を使用してのみ追加できます。 .ctor() BarScript::.ctor() スタット:.ctor() プレーヤー:また、あなたのスクリプトは、すべての でUnityEngine.MonoBehaviourはScriptableObjectあるいは全く基本クラスから継承することができ.ctor() ' – Nic