2017-06-10 4 views
0

ich eine Zeichenklasse mit vielen Variablen gemacht habe, habe ich ein RPG vor langer Zeit in der ich ein Verfahren Gang auszuzurüsten und ausklinken es, Addieren und Subtrahieren von Werten, ziemlich einfach, ich würde :Unity, wie Komponenten für den Zugriff auf in einer Klasse

public void equip(Gear g){ 
    increaseValues(g.getValue()); 
    //increaseValues.. 
} 

public void unequip(Gear g){ 
    increaseValues(-g.getValue()); 
    //increaseValues.. 
} 

Ziemlich einfach, könnte ich das gleiche in Unity tun, aber hier ist, wo das Problem kommt, eine Klasse in OOP mit Werten und Methoden, die ich schaffen würde, aber der Trend in der Einheit ist zu Skripts erstellen und fügen sie sie als Komponenten zu einer anderen Klasse, also habe ich keine Ahnung, wie man auf die Information über eine Objekt-eingebettete Komponente zugreifen kann, was gebe ich in den Parametern weiter? Ich habe GameObject ausprobiert, aber es sagt mir, dass die Werte oder Methoden, auf die ich zugreifen möchte, nicht in einem solchen Objekt existieren.

+1

Es klingt wie Sie die grundlegenden Unity Tutorials konsultieren müssen - ein 'GameObject' die Haupteinheit ist, Skripte als Komponenten darauf – UnholySheep

+0

der Tat angebracht sind, und zwar nicht nur grundlegenden diejenigen, ich durch die ganze Dokumentation gehen könnte und frag nie etwas hier drinnen, danke für den Schnitt. –

+0

Bitte beachten Sie, dass Poster hier nicht nur männlich sind. Einige unserer weiblichen Helfer haben die Meinung geäußert, dass sie sich jedes Mal, wenn sie sich auf ein "Gentlemen" -Publikum beziehen, ausgeschlossen fühlen. Versuchen Sie daher, diese Art von Adresse oder eine andere geschlechtsspezifische Sprache zu vermeiden. Vielen Dank. – halfer

Antwort

3

können Sie andere GameObject zugreifen ‚s-Skripte über GameObject.GetComponent(Type type) Methode.

public GameObject myGameObject; //Attach gameobject in Unity Editor 
private MyClass myGameObjectClass; 

void Start() { 
    myGameObjectClass = myGameObject.GetComponent<MyClass>(); 
    //or you could use this 
    //myGameObjectClass = myGameObject.GetComponent(typeof(MyClass)) as MyClass; 
    myGameObjectClass.MyProperty = 2; 
    myGameObjectClass.MyMethod(); 
} 
+1

Sie sollten immer den Rückgabewert von 'GetComponent' überprüfen, da es' null' zurückgibt, wenn das Spielobjekt keine Komponente des gewünschten Typs hat – UnholySheep

Verwandte Themen