2017-02-12 86 views
0
using UnityEngine; 

    public class CartMovement : MonoBehaviour { 

    SpriteRenderer spriteRenderer; 

    LevelManager LevelManIns; 

    void Start() { 

     spriteRenderer = GetComponent<SpriteRenderer>(); 

     spriteRenderer.enabled = true; 

     (line25)LevelManIns = GetComponent<LevelManager>(); 

     Debug.Log("--" + LevelManIns.xy.X); 
     //transform.position = LevelManIns.Tiles[LevelManIns.PortalGreen].GetComponent<TileScript>().transform.position; 

     iTween.MoveTo(this.gameObject, iTween.Hash("path", iTweenPath.GetPath("cartPath"), "time", 3)); 
     } 
     } 

我得到的錯誤:統一:通過getcomponent無法獲取參考一類

的NullReferenceException:未設置爲一個對象 CartMovement.Start()的實例對象引用(在資產/ scripts/CartMovement.cs:25)

我不明白爲什麼我無法獲得對另一個腳本的引用。誰能解決這個問題謝謝。

+0

您確定LevelManIns = GetComponent ();正在產生錯誤?因爲不能產生錯誤。如果它不能得到組件,它將返回null。它必須是下面(或上面)的行或其他行。它所說的是,你正試圖調用一些無效的東西。我最好的猜測是GameObject沒有附加LevelManager。 –

+0

是levelmanager是另一個gameobject的腳本,但我需要訪問這個類的一些屬性。我怎樣才能實現它? –

回答

1

如果級別管理器連接到另一個對象(如您在註釋中提到的那樣),則有一種方法是通過檢查器引用該對象,然後從該對象獲取腳本。

public class CartMovement : MonoBehaviour { 

SpriteRenderer spriteRenderer; 
// Make it public, so it is visible in the inspector, and drag and drop the object into that instance 
public LevelManager LevelManIns; 

    void Start() { 
     // No need to assign it here, just maybe check if it is assigned like so 
     if (LevelManIns == null) 
      // Error, this should be assign outside 
    } 
} 
+0

這樣做謝謝! –