2016-01-07 84 views
1

我編寫了一個類,其中聲明瞭Light作爲屬性。在構造函數中,我在使用它之前實例化Light對象,但在實例化後的行處得到空引用異常(NodeLight.type = LightType.Spot;)。實例化一個輕型遊戲對象後的空引用異常

using UnityEngine; 
using System.Collections; 

public class Node{ 

    public bool walkable; 
    public Vector3 worldPosition; 
    public bool Selected; 
    public Light NodeLight; 

    public Node(bool _walkable, Vector3 _worldPos) { 
     Selected = false; 
     walkable = _walkable; 
     worldPosition = _worldPos; 
     NodeLight = new Light(); 
     NodeLight.type = LightType.Spot; 
     NodeLight.transform.position = new Vector3(worldPosition.x, worldPosition.y + 3f, worldPosition.z); 
     NodeLight.enabled = false; 
    } 
} 

謝謝您的幫助

+0

哪一行會引發空引用異常?您是否嘗試過使用'Debug.Log()'輸出值,以確認它們是否如預期的那樣? – Serlite

+0

這是引發錯誤的行: NodeLight.type = LightType.Spot; –

回答

1

一個LightComponent,所以它應該在GameObject中存在。

看一看這個例子從Unity Docs

public class ExampleClass : MonoBehaviour { 
    void Start() { 
     GameObject lightGameObject = new GameObject("The Light"); 
     Light lightComp = lightGameObject.AddComponent<Light>(); 
     lightComp.color = Color.blue; 
     lightGameObject.transform.position = new Vector3(0, 5, 0); 
    } 
} 

試試這個辦法,或嘗試加入GameObjectNodeLight作爲Component,然後改變自己的立場,而不是個別Light組件。

+0

謝謝你,那是它 –

+0

好抓!總是在這裏學習關於Unity的新知識。 = D – Serlite

+0

@Serlite謝謝! :) – lase

相關問題