Jump to content
Unity Insider Forum

Booleans auch in anderen Klassen verwenden [Javascript]


Piwi

Recommended Posts

Hey Leute, ich hab grad nen System ausprobiert (selbst erdacht, was wahrscheinlich der größte Fehler war :P ), und bin dabei auf einige Probleme gestossen. Ich habe zwei Classes

 

 

Für das Hauptmenü

#pragma strict

function Update () {
}
function OnGUI() {
if (german = true) {
 if (GUI.Button(Rect(185,170,664,112), "Starte das Spiel")){
  Application.LoadLevel(1);
  };
 if (GUI.Button(Rect(185,438,664,112), "Optionen")){
  Application.LoadLevel(2);
  }
 }

if (english = true) {
 if (GUI.Button(Rect(185,170,664,112), "Start the game")){
  Application.LoadLevel(1);
  };
 if (GUI.Button(Rect(185,438,664,112), "Options")){
  Application.LoadLevel(2);
  }
  }


}

 

"Optionen" Wo man zwischen den Sprachen hin und her schalten kann

 

#pragma strict
public boolean english = false;
public boolean german = true;
function Start () {
}
function Update () {
}
public function OnGUI () {
if (GUI.Button(Rect(222,194,155,165), "Deutsch")) {
 german = true;
 english = false;
 }

if (GUI.Button(Rect(545,192,162,181), "English")) {
 german = false;
 english = true;
 }
}

 

Nun ist das so, dass Unity mir folgende Fehler anzeigt:

 

Im Menü:

Assets/Men�.js(8,22): BCE0043: Unexpected token: true. (auch (18,23))

 

Assets/Men�.js(8,20): BCE0044: expecting ), found '=' (auch 18,21)

 

In den Optionen

Assets/Optionen.js(3,8): BCE0043: Unexpected token: boolean. (auch 4,8)

 

Hab ich da irgendwie Javascript und C# (wegen den übrigens sehr guten Spaceshooter-Tutos von Marrrk ;) ) zusammengewürfelt? Oder woher sind die Fehler?

Und die große Frage: Bin ich mit dem zweisprachigen Programm auf dem richtigen Weg und wie mach ich das richtig?

 

Oh, halben Roman geschrieben, hoffe trotzdem, dass dies einer liest,

 

Piwi

 

PS: Ich bin blutiger Anfänger, hab mich bisher nur von Tutorials ernährt, und jetzt mal versucht, was alleine auf die Beine zu stellen, berücksichtigt das bitte :)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Danke schon mal! Der Großteil der Fehler hat sich aufgelöst, nur noch zwei von einer Sorte:

The name 'bool' does not denote a valid type ('not found'). einmal in Zeile 3 von Optionen und in Zeile 4 ebenfalls bei Optionen.

Ich hoffe, ihr könnt mir abermals helfen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Unity benutzt UnityScript nennt es aber fälschlicherweise javascript.

 

Um auf Variablen anderer Scripte zuzugreifen musst du diese Variablen entweder mit static markieren, dann reicht: ScriptName.Variable aus. Ansonsten musst du mit GetComponent die Instanz des Scriptes holen und kannst dann mit dem Ergebniss auf die Variable zugreifen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ansonsten musst du mit GetComponent die Instanz des Scriptes holen

 

GetComponent würde ich vermeiden wo es irgend geht. Eleganter und performanter ist da ne Variable zu installieren die auf das andere Script zugreift.

 

Pseudocode:

 

var anderesobjekt:anderesscript;

 

if (whatever){

anderesobjekt.meinevariable = tuwas;

}

Link zu diesem Kommentar
Auf anderen Seiten teilen

ich bekomms immer noch nicht hin, sorry ;D

menue.js

#pragma strict
public static var english : boolean = false;
public static var german : boolean = true;
function Update () {
}
function OnGUI() {
if (german == true) {
 if (GUI.Button(Rect(185,170,664,112), "Starte das Spiel")){
  Application.LoadLevel(1);
  };
 if (GUI.Button(Rect(185,438,664,112), "Optionen")){
  Application.LoadLevel(2);
  }
 }

if (english == true) {
 if (GUI.Button(Rect(185,170,664,112), "Start the game")){
  Application.LoadLevel(1);
  };
 if (GUI.Button(Rect(185,438,664,112), "Options")){
  Application.LoadLevel(2);
  }
  }


}

 

optionen.js

#pragma strict

function Start () {
}
function Update () {
}
public function OnGUI () {
 // Allgemeine Sprachregelung
if (GUI.Button(Rect(222,194,155,165), "Deutsch")) {
 menue.german = true;
 menue.english = false;
 }

if (GUI.Button(Rect(545,194,155,165), "English")) {
 menue.german = false;
 menue.english = true;
 }

 //Zum Hauptmenü



}

 

wahrscheinlich bin ich einfacj nur zu blöd, wär aber schön, wenn ihr mir trotzdem helfen könntet.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Zuerst einmal, was bekommst du denn nun für Fehler? Wieso vergessen die Leute immer die Fehler zu posten?

 

Zweitens: UnityScript kann Enums, du solltest daher ein solches verwenden anstatt auf booleans zurück zu greifen.

 

Ausserdem solltest du dich mit StringTables vertraut machen wenn du vorhast dein Spiel zu lokalisieren, 2x den fast identischen Code schreiben zu müssen, je nach Sprache ist sehr sehr ineffizient.

 

Hier wäre eine: http://forum.unity-community.de/topic/6346-stringtable/

Link zu diesem Kommentar
Auf anderen Seiten teilen

Assets/Optionen.js(16,17): BCE0005: Unknown identifier: 'menue'.

Assets/Optionen.js(17,17): BCE0005: Unknown identifier: 'menue'.

Assets/Optionen.js(21,17): BCE0005: Unknown identifier: 'menue'.

Assets/Optionen.js(22,17): BCE0005: Unknown identifier: 'menue'.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Archiviert

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

×
×
  • Neu erstellen...