2017-02-12 85 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

这样做谢谢! –