2016-06-12 8 views
0

So habe ich ein grundsätzliches Problem in der Einheit:Unity C#, wie man variabel machen gleich einen anderen ohne statische Schlüsselwort

public int A = 0; 
int B = A; 

Dieser Code führt ein ‚A Feldinitialisierer das nicht statische Feld nicht verweisen können, eine Methode oder Eigenschaft ' Error.

So konnte ich dies tun:

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

Welche funktioniert, aber dann Variable 'A' zeigt nicht auf den Inspektor auf. Kann ich meinen Kuchen essen und auch essen, indem ich sowohl eine Variable habe, die gleich einer anderen sein kann, als auch, dass sie im Inspektor erscheint? Vielen Dank.

+1

Statische Methode kann nicht auf nicht statisches Feld zugreifen, wenn A nicht statisch sein soll, dann muss die Methode mit A auch nicht statisch sein, die Klasse kann auch nicht statisch sein. Sie müssen Ihren vollständigen Quellcode veröffentlichen, damit andere Änderungen vorschlagen können. –

+0

@Rosdi Kasim Die Klasse ist nicht statisch. – Demandooda

+0

David hat recht, man kann den Wert einer Var nicht vor "start" oder "wach" geben, man braucht 'start' um zu initialisieren – tim

Antwort

2
public int A = 0; 
public int B; 

void Start() { 
    B = A; 
} 
0

Lösungen, die konnte in C# gearbeitet haben:

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

Und

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

Static und constant Variablen können nicht in Unity-Editor angezeigt werden. Wenn Sie A zu B zuweisen möchten und es weiterhin im Editor anzeigen lassen möchten, müssen Sie dies in einer Funktion tun.

Wenn Sie B immer die-gleichen Wert haben wie A throuout der Programmlaufzeit,

public int A; 
int B; 

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

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

Da die Klasse nicht statisch ist, wird Ihre Felder nicht initialisiert werden, bis Sie tatsächlich schaffen eine Instanz der Klasse zum Beispiel.

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(); 
}