2016-08-21 4 views
0

メインカメラはSCRIPT1から「変数2」は、どのように私はユニティ・C#で複数のオブジェクトに変数を渡すことができ

public int variable2; 
を持つスクリプト2を共有する作成したインスタンスになります

public int variable1; 

複数のキューブを「変数1」を持っています

私は、必要なときに変数を取得する方法としてこれを使用しようとしましたが、これは開始時または起動中ではなく特定のアクションを通してです。

public int variable2; // on the cube 
public GameObject mainCamera; // I set this in the editor 
public void main() { 
    variable2 = mainCamera.GetComponent <cameraScript>().variable1; 
} 

私はそれらをたくさん持っているので、どのように特定のものを参照せずに変数2を設定することができますか?タグでもできますか?

+1

をあなたは "特定のものを参照することなく"何をしていますか? – AminSojoudi

+0

それらがすべて同じ値を持ち、他の場所(あなたのカメラススクリプト)からその値を取得した場合は、そのカメラススクリプトへの参照を保持し、その変数を使用してください。 –

+0

"必要なときに変数を取得するには、それを変えるものが他にもあります。スクリプトにはそれがあります" - 具体的な用語でコードを記述することが必死になる必要があります。 "variable"という名前の変数でプログラムすることはできません! ...名前が混乱して無意味なので、誰もあなたのコードを手助けすることはほとんど不可能です。 – Adam

答えて

0

すべてのキューブのvariable2の値を一度に変更したいのですか?私はあなたがこのvariable2の値を統一したいと思っています。

「はい」の場合、変数2をのstatic変数に変更するのはなぜですか?プロジェクト全体でScript2クラスの値を共有するためです。

例えば

あなたScript2.csの場合:

public static int variable2; 

ですから、1行であなたのサンプルスクリプト内のすべてのキューブの変数2の値を変更することができます。

Script2.variable2 = mainCamera.GetComponent <cameraScript>().variable1; 
+0

えええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええ、私はvariable1から情報を必要とするかもしれないオブジェクトの束を持っていますが、あなたが言うことができると思う "アクティブ"でなければそれを持っている必要はありません。私は多くのキューブを変更することができますが、同じスクリプトではなく、必要のない別のタグ、変数、プロパティを持つ他のキューブに影響を与えることはできません。静的ではない理由は、静的変数を変更できないという印象を受けていたからです。どちらも変更できる必要があり、複数回割り当てられている必要があります。 –

+1

@MikeSmith 'static 'は、変数の値(例えば、変数の値)がクラスの一部であり、クラスの特定のインスタンスではないことを意味します。簡単に変更できます。変数は 'const'であれば変更できません。 –

+0

さて、私は空を作成し、カメラの後ろに隠しました。私はそれにScript2を与えました。私はvariable2をpublic staticにしました。私はカメラでScript1に行き、いくつかの行を追加しました: public GameObject cube; //エディタで割り当てられました cube.GetComponent ().variable2 = variable1; –

関連する問題