2017-02-12 11 views
0

私は2つのプレハブを持っています。接続の2つのオブジェクトOfter 1)FoodItem 2)消費者可変情報をプレハブから別のプレハブに転送するにはどうすればよいですか?

public class ItemController{ 
    //Item Details 
    public float price; 
    public float eatingTime; 
} 

顧客が一定の期間、「食べる」する必要が引き金となりました。彼らが食べたら、彼らは支払う。お支払いはスコアを更新する必要があります。

public class CharacterControl : MonoBehaviour 
{ 
    //CustomerDetails 
    if(time == eatingTime){ 
    Score = Score + price; 
    UpdateScore(); 
    } 
} 

public class ScoreManager : MonoBehaviour { 
    public float Score; 
    public Text scoreText; 

    // Use this for initialization 
    void Start() { 
     scoreText.text = "0"; 
    } 

    public void UpdateScore() 
    { 
     scoreText.text = Score.ToString("2"); 
    } 
} 

私は、スクリプトを接続しようとしたが、プレハブが作成された後のスコアが動かないので、それは、スクリプトを削除します。

私は静的変数を実行しようとしましたが、問題が発生しました。私はそれがどのように働くと思われるのかうんざりしています。

答えて

1

あり、あなたが行うことができ、いくつかのものがありますが、最善のことは、このような何かをすることはおそらくです:

public class CharacterControl 
{ 

    void Update() 
    { 
     GameObject.FindGameObjectByTag("Tag-of-scoremanager-").GetComponent <ScoreManager>().Score += price; 


    } 
} 

もう一つの方法はそうのような、インスペクタープロパティとしてスコアマネージャが含まれるように、たとえば次のとおりです。

ScoreManager manager; 

してから、インスペクタに、スコア管理プレハブをドラッグ&ドロップ、 し、それをインクリメントするには、単に実行します。

manager.Score += price; 
+0

ありがとう、私はこれを試してみます。 –

+0

ご不明な点がありましたら教えてください:) –

+0

私はうまく機能しました!私はスコアを静的なpublic float Scoreとしました。これは、あなたが言及したものを使用できるようにします。次に、私はscoreTxextをUpdate()に入れます。助けてくれてありがとう! –

関連する問題