Jump to content
Unity Insider Forum

Scripte per Script aktivieren?


pcace

Recommended Posts

Hi,

 

ich habe hier eine Kamera in meiner Unity Szene und 3 Scripte die alle ein anderes GUI auf mein Bildschirm zaubern.

Nun will ich mit einem Anderen Script diese 3 GUI Scripte unabhängig voneinander an bzw ausschalten.

 

Geht das? Ich dachte da an sowas wie GameObject(Find die kamera wo das script drauf ist).scriptname --> aus bzw. an.

 

Geht sowas?

 

Gruß und danke schonmal!

 

 

Pcace

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ja das geht und es gibt viele Möglichkeiten dafür.

Aber warum machst du das mit 3 GUI Scripten?

Würde ich nur in ganz gewissen Fällen machen, denn jedes Aufrufen der OnGUI() kostet Performance. Egal ob da etwas drin steht bzw. ausgeführt wird oder nicht.

Mach das in einer GUI, wo du innerhalb der GUI einfach eine Variable abfragst und nur wenn die true ist, machste die besonderen GUI Elemente.

Link zu diesem Kommentar
Auf anderen Seiten teilen

If kostet sogut wie garnix und von ein und ausschalten war hier nicht die Rede.

 

[edit] Ach so: Um ein und auszuschalten musst du übrigens auch was abfragen, gelle?

Wie willst du sonst entscheiden ob es ein oder ausgeschaltet werden soll?! ;)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hmm, da ich wirklich ein blutiger Anfänger bin, und das ding hier am besten heute fertig bekommen muss (Uniprojekt) und es wohl nie weiter als bis hierher benutzt wird, ist mir (es tut mir leid das zu sagen) die Performance grad ziemlich egal ;)

 

Ich habe jetzt das hier probiert:

 

if (gui_counter == 2){

 

HUD_Aufgabe1 script = GetComponent<HUD_Aufgabe1>();

script.enabled = false;

}

 

 

leider bekomme ich folgenden Fehler:

 

NullReferenceException: Object reference not set to an instance of an object

ScaleWorld.Update () (at Assets/C Scripts/ScaleWorld.cs:597)

 

 

Was mache ich falsch?

 

Gruß

 

Pcace

Link zu diesem Kommentar
Auf anderen Seiten teilen

Gut das hätte ich mir auch übersetzten können ;)

vielleicht für jemanden, der genauso keine Ahnung hat und das gleiche Problem hat:

 

HUD_Aufgabe1 script = GameObject.Find("CameraRight").GetComponent<HUD_Aufgabe1>();

 

 

Gruß

 

Pcace

Link zu diesem Kommentar
Auf anderen Seiten teilen

...und wenn du den von Marrrk angesprochenen Fehler behoben hast, kleiner Tipp: "Cashe" das Script. Etwa so:

public HUD_Aufgabe1 aufgabe1; // hier wird dein script abgelegt um darauf zu verweisen

void Start(){
aufgabe1 = GetComponent<HUD_Aufgabe1>(); // script vom gleichen objekt abholen
};

void Update(){
aufgabe1.IrgendeineMethodeDieWasMachenSoll(); // irgendwas in dem anderen script machen
}

...sowas kann an sich gleich am Anfang angewöhnen.

 

ganz böse:

HUD_Aufgabe1 script = GameObject.Find("CameraRight").GetComponent<HUD_Aufgabe1>();

1. GameObject.Find - unschön und nur für Start und Awake zu empfehlen - ein alter Hut.

2. "CameraRight" - bloß keine Objekte anhand ihrer Namen suchen, wenn es anders geht! Sicher gibt es Situationen in denen es vlt nicht schöner geht, aber im Normalfall solltest du strings nur für das Anzeigen von Informationen im UI nutzen.

 

Ansonsten easy going - da kommst du noch hin. Einfach am Ball bleiben! :)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Archiviert

Dieses Thema ist jetzt archiviert und für weitere Antworten gesperrt.

×
×
  • Neu erstellen...