2016-04-13 17 views
-2

私はshelf.csとGameManager.csのクラスを持っています。 shelf.csでは、displayAppleメソッドは文字列を返します。次に、GameManagerは文字列にアクセスし、それをテキストフィールドに表示します。テキスト表示のために他のクラスの変数にアクセスできません[Unity]

shelf.cs GameManager.cs

public class GameManager : MonoBehaviour { 
    Basket bask; 
    public Text text_apple; 

    // Use this for initialization 
    void Start() { 
     text_apple.text = bask.displayApple; //i want to call the method of displayApple to get the string returned. 
     } 
} 

で、その後

public class shelf: MonoBehaviour 
{ 
     //adding all the gameobjects into a list 
     public List<GameObject> players; 

     public string textApp =""; 

     public string displayApple() 
     { 
      for (int i = players.Count - 1; i >= 0; i--) { 
       if (players [i].name == "Apple") { 
        textApp = textApp + players [i].GetComponent<Apple>().type + " " + players [i].GetComponent<Apple>().colour + " " + players [i].GetComponent<Apple>().weight; 
        textApp = textApp + "\n"; 
       } 
      } 
      long_apple= textApp; 
      return long_apple; 
     } 
    } 

テキストフィールドには文句を言わない文字列を表示し、エラーがあります。

NullReferenceException: Object reference not set to an instance of an object 
GameManager.Start() (at Assets/scripts/GameManager.cs:12) 
+0

"shelf"は "Shelf"でなければなりません。 – Fattie

+0

それ以外は?何も間違っていない? – whoami

+0

"displayApple"は "DisplayApple"でなければなりません – Fattie

答えて

0

バスはGameManager.csで決して初期化されていません。

public class GameManager : MonoBehaviour { 
Basket bask; 
public Text text_apple; 

// Use this for initialization 
void Start() { 
    bask = GameObject.Find("BaskNameInHierarchy").GetComponent<Basket>() 
    text_apple.text = bask.displayApple; //i want to call the method of displayApple to get the string returned. 
    } 
} 

また、バスケットを公開することもできます。public Basket bask;次に、GameObjectを、そのスクリプトがアタッチされているGameObjectのインスペクタにドラッグします。

displayApple()にアクセスしようとしている場合は、ShelfスクリプトもBasketと呼びます。それ以外の場合はprivate shelf baskです。

+0

これで動作します。しかし、私は不思議だった。私が呼び出しメソッドを使用する場合、void Start(){long_text = _basket.DisplayApple(); \t \t Debug.Log(long_text);}、コンソールには何もありません。 y?関数が無効な場合は、表示されます – whoami

+0

私はあなたが何を意味するか分かりません。あなたが入力した通りに正確にしたならば、 'DisplayApple()'が何かを返すなら、 'long_text'を表示しなければなりません。私の答えがあなたの問題を解決した場合、それを答えとしてマークすることができるので、他の人はすでに解決された問題を解決しようとすることはありません。 – vonis22

+0

oh。問題が解決しました。御時間ありがとうございます – whoami

関連する問題