2016-06-12 6 views
0

を使用せずに、別のに等しいだから私は団結して、基本的な問題を抱えている:ユニティC#は、静的なキーワードに

public int A = 0; 
int B = A; 

このコードは「フィールド初期化子が非静的フィールド、メソッド、またはプロパティを参照することはできませんスロー'エラー。

だから私はこれを行うことができます:動作しますが、その後、変数「」インスペクタに表示されません

public static int A = 0; 
int B = A; 

を。私はケーキを食べ、それを食べることができますか、それと同じ変数があり、それがインスペクタに現れますか?ありがとうございました。

public const int A = 9; 
int B = A; 

そして

public static int A = 9; 
int B = A; 

Staticconstant変数は、ユニティ・エディタで表示することができません。 C#で働いている可能性が

+1

静的メソッドは非静的フィールドにアクセスできません.Aを非静的にするには、Aを使用するメソッドも非静的でなければなりません。クラスも静的にすることはできません。変更を提案する他の人のための完全なソースコードを投稿する必要があります。 –

+0

@Rosdi Kasimクラスは静的ではありません。 – Demandooda

+0

Davidが正しいです、 'start'や' awake'の前にvarの値をvarに与えることはできません。初期化するには 'start'が必要です – tim

答えて

2
public int A = 0; 
public int B; 

void Start() { 
    B = A; 
} 
0

ソリューション。 ABに割り当てても、それをエディタに表示させるには、関数でこれを行う必要があります。

あなたはBは常にクラスは静的ではありませんので、あなたが実際に作成するまで、あなたのフィールドが初期化されませんプログラムの実行時throuout

public int A; 
int B; 

//Initialize A to B 
void Start() 
{ 
    B = A; 
} 

//Make B always equals to A 
void Update() 
{ 
    B = A; 
} 
0

と、同じ値を持つようにしたい場合は例えばクラスのインスタンス。

public class Bot 
{ 
    public int a = 0; 
    public int b; 
    //If you try this it will not work 
    //public int b = a; 

    public Bot() 
    { 
     //This will work because once you create Bot, all fields will be initialized 
     this.b = a; 
    } 
} 

public static void Main() 
{ 
    //Once you create the class the Bot constructor will be called automatially 
    Bot botty1 = new Bot(); 
} 
関連する問題