Was ist falsch mit diesem Script (Unity, C#)?

1 Antwort

Hier in der Dokumentation steht das du Initialise() nicht einfach so aufrufen sollst sondern das Ergebnis StartCoroutine übergeben musst. Ich hab auch mal einwenig im Internet geschaut, aber scheinbar gibt es keinen einfacheren Weg eine bestimmte Zeit zu warten.

Eine Alternativlösung wäre das du nicht eine bestimmte Anzahl an Sekunden wartest sondern das der Nutzer einmal Klicken muss um sich den nächsten Text anzeigen zu lassen.

Hinweis: Schön das du dir Unity selbst beibringen möchtest, aber es ist weitaus sinnvoller erst C# via Bücher oder Tutorials zu lernen anstatt gleich mit Unity durchzustarten.

lg Suiram1

Woher ich das weiß:Hobby – Ich programmiere seit 3 Jahren mit C#

Noah0623 
Beitragsersteller
 28.03.2024, 22:22

Hey ich bin es nochmal. Ich habe es jetzt versucht umzusetzen (also deine Alternatividee), aber irgendwie macht er wenn man beim ersten mal klick direkt Text2 und Text3 sichtrbar, und beim zweiten mal macht er es alles unsichtbar. Er soll aber logischerweise erst Text2, dann Text3 und dann erst alles unsichtbar machen. Hier der Codeauszug:
``
if (IsEnabled == true)

{

   

  if (Input.GetKeyDown(KeyCode.Mouse0) & val == 0)

  {

    Text2.SetActive(true);

    val = 1;

  }

  if (Input.GetKeyDown(KeyCode.Mouse0) & val == 1)

  {

    Text3.SetActive(true);

    StartText.GetComponent<Text>().text = "Click to start";

    val = 2;

  }

  if (Input.GetKeyDown(KeyCode.Mouse0) & val == 2)

  {

    Intro.SetActive(false);

    IsEnabled = false;

    val = 3;

  }

}

``

Noah0623 
Beitragsersteller
 28.03.2024, 22:25
@Noah0623

Übringens: Da soll "&&" anstatt "&" stehen, habe es nur getestet hat aber nicht daran gelegen hab es dann vergessen wieder richtig zu machen

Suiram1  28.03.2024, 22:57
@Noah0623

Nach der If-Bedingung für Text1 musst du bei allen aderen else if anstelle von einem normalen If verwenden. Das muss dewegen so sein, weil wenn du nur if nimmst bei jedem Klick jede bedingung geprüft wird und in deinem Fall auch ausgeführt wird. else if sorgt dafür, dass pro durchgang nur eine der Bedingungen ausgeführt werden kann.

Suiram1  28.03.2024, 22:58
@Noah0623

Übrigens gibt es eine Formatierungs Option für Quellcode hier auf GuteFrage.

Suiram1  29.03.2024, 12:51
@Noah0623

Im Text-Editor auf die drei Punkte und dort das </> Symbol auswählen

Noah0623 
Beitragsersteller
 28.03.2024, 21:24

Übringens die Alternatividee ist sehr gut, ich werde dann die nehmen! Vielen Dank nochmal!

Noah0623 
Beitragsersteller
 28.03.2024, 21:23

Vielen Dank! Ich habe tatsächlich schonmal was mit C# gemacht, und zwar Visual Studio Programmentwicklung und auch sogar Mods für GTA5 erstellt, aber C# in Unity ist da bisschen anders...