Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!
Werbeanzeige
Treue Seele
Beruf: Student, Hardware- und Softwareentwicklung als wissenschaftliche Hilfskraft
Treue Seele
Beruf: Student, Hardware- und Softwareentwicklung als wissenschaftliche Hilfskraft
Quellcode |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
void OnMouseDown () { selected = !selected; //Camera cam = Camera.current; Camera cam = Camera.main; if (cam == null) Debug.Log ("cam == null"); if (selected) { cam.SendMessage("setTarget", this.transform); } else { cam.SendMessage("removeTarget", this.transform); } } |
Zitat
Use this function only when implementing one of the following events: MonoBehaviour.OnRenderImage, MonoBehaviour.OnPreRender, MonoBehaviour.OnPostRender.
Es ist ja keine Schande etwas falsch zu machen, als Programmierer tu ich das täglich, [...].
Treue Seele
Beruf: Student, Hardware- und Softwareentwicklung als wissenschaftliche Hilfskraft
Wahrscheinlich steht Camera.current nur dann zur Verfügung, wenn eine der entsprechenden Methoden aufgerufen wird, da diese sehr wahrscheinlich nur für eine einzelne Kamera aufgerufen werden.
Alle anderen Methoden (bspw. Awake, Start und Update) wiederum werden nicht für eine bestimmte Kamera aufgerufen, weshalb es keine Aktuelle Kamera geben kann.
Auf die Camera könntest die ggf. auch zugreifen, indem du in dem entsprechenden, aus dem heraus du darauf zugreifen willst, einen öffentlichen Member (public Camera myCamera;) oder einen privaten mit der SerializeField-Annotation ([SerializeField] private Camera myCamera;) anlegst und dann darüber den Aufruf durchführst (myCamera.SendMessage("setTarget", this.transform);).
Auf die gleiche Weise könntest du allerdings auch eine Referenz auf das jeweilig andere Skript hinterlegen (public MyScript myScriptReference;) und den Aufruf der Methode direkt darüber durchführen (myScriptReference.setTarget(this.transform);).
Auch solltest du dir im Klaren darüber sein, warum du das Transform (this.transform oder this.gameObject.transform) und nicht das GameObject (this.gameObject) übergibst.
Es ist ja keine Schande etwas falsch zu machen, als Programmierer tu ich das täglich, [...].
Wahrscheinlich steht Camera.current nur dann zur Verfügung, wenn eine der entsprechenden Methoden aufgerufen wird, da diese sehr wahrscheinlich nur für eine einzelne Kamera aufgerufen werden.
Es ist ja keine Schande etwas falsch zu machen, als Programmierer tu ich das täglich, [...].
Werbeanzeige