2016-05-16 11 views
0

私のゲームには2つのC#スクリプトがあります。それらの上に私の "メインプレーヤーオブジェクト"にあり、他のスクリプトは "私のメインカメラ"にあります。私はメインプレーヤーのスクリプトにフロート変数を宣言したい、そして、すべてのゲームで、その変数に自分のプレーヤーのxポジションを記録し、同時にこの値をメインカメラのスクリプトに渡し、これを割り当てる私のメインカメラのx位置に1秒ごとに値を設定します。変数を別のスクリプトからスクリプトに渡すにはどうすればよいですか?または、私はどのように私のゲームの任意のスクリプトで使用できる変数を作成できますか?Unity 3Dの共有変数

+0

これを処理する方法はいくつかあります。 1つは、カメラスクリプト上でTransform/GameObject変数を公開し、Unityインスペクタでプレーヤーオブジェクトをドラッグすることです。次に、それを使ってプレーヤーの 'transform.position.x'にアクセスします。これはあなたのケースで最も簡単な解決策です。プレーヤースクリプト自体に必要な余分なスクリプトはありません。しかし、これにより、この変数はカメラスクリプトからアクセスできるようになります。プロジェクト内のすべてのスクリプトからアクセスできるようにする必要がある場合は、これを別の方法で行う必要があります。 – Serlite

+1

トムが言うことをする。この質問は1000回尋ねられました! – Fattie

答えて

2

あり非常に詳細にこの問題を説明して答えhereだが、その答えに含まれている最も簡単な方法は、以下のような何かをすることです:

他のスクリプトで
public class Speed: MonoBehaviour 
    public float speed; 
    // maybe you want restrict this to have read access, then you should use a property instead 

そして:

GameObject gameObject = GameObject.Find ("Some object"); 
Speed theSpeed = gameObject.GetComponent <Speed>(); 
float mySpeed= theSpeed.speed; 
+0

第2の方法はより安全なように見えます。どうもありがとうございました。 –

+0

これは、あなたがあなたが答えをチェックするのを助けてくれたなら、問題ないです! :-) – Tom