Du bist nicht angemeldet.

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

MitgliedXYZ

Alter Hase

  • »MitgliedXYZ« ist der Autor dieses Themas

Beiträge: 1 369

Wohnort: Bayern

  • Private Nachricht senden

1

07.02.2012, 17:05

Unity 3d Gedrückte Taste abfragen (in C#)

Hallo Community,
ich bin neu hier und hoffe ihr könnt mir weiterhelfen.

Mit folgendem Script (welches ich einem Objekt zugewiesen habe) will ich bei einem Druck auf die Pfeiltaste oben einen Text anzeigen lassen, aber es passiert einfach nichts. Könnt ihr einen Fehler finden?

Danke für eure Hilfe!

Quellcode

1
2
3
4
using UnityEngine;using System.Collections;
public class NewBehaviourScript : MonoBehaviour {
    // Use this for initialization  void Start () {     }       // Update is called once per framevoid Update (){          }
    void OnGUI()    {        if (Event.current.Equals(Event.KeyboardEvent("UpArrow"))) print("Korrekt");}   }

DerMark

Treue Seele

Beiträge: 324

Wohnort: Emsdetten

Beruf: Softwareentwickler

  • Private Nachricht senden

2

07.02.2012, 17:17

Ich würde es so versuchen:

C#-Quelltext

1
2
3
4
if (Input.GetKeyDown (KeyCode.UpArrow))
{
 ...
}


Das was du hast sollte aber laut Dokumentation auch funktionieren, eventuell musst du UpArrwor auch als uparrow schreiben.

print zeigt übrigens mit Absicht keinen Text im Spiel an, es dient nur zur Log Ausgabe, aber ich nehme an das wusstest du bereits :)

Harry222

Alter Hase

Beiträge: 864

Beruf: Student

  • Private Nachricht senden

3

07.02.2012, 17:32

Zur Log Ausgabe in Unity benutzt man:

C#-Quelltext

1
2
3
Debug.Log("");
Debug.LogWarning("");
Debug.LogError("");
Die Debug-Klasse

Für Input ist (wie DerMark schon sagte) die Input-Klasse verantwortlich:
Die Input-Klasse
Input.GetKeyDown(...) gibt soweit ich weiß übrigens nur einemal zurück, dass die Taste gedrückt wurde und danach erst wieder, wenn die Taste einmal losgelassen und wieder gedrückt wurde!
Nur als Hinweis!

Mfg Harry222

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Harry222« (07.02.2012, 17:46)


DerMark

Treue Seele

Beiträge: 324

Wohnort: Emsdetten

Beruf: Softwareentwickler

  • Private Nachricht senden

4

07.02.2012, 17:37

print gibt es auch als Log Ausgabemöglichkeit

Harry222

Alter Hase

Beiträge: 864

Beruf: Student

  • Private Nachricht senden

5

07.02.2012, 17:46

Stimmt, kannte ich nicht!
Wenn ich den Code für die Tastenabfrage, so wie er ihn oben stehen hat, in OnGUI bei mir einfüge funktioniert es auch!

Edit:
Ich hab den Fehler!
Statt UpArrow nur Up! Dann funktioniert es!
Ich hatte es eben mit w ausprobiert!

Mfg Harry222

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Harry222« (07.02.2012, 17:51)


MitgliedXYZ

Alter Hase

  • »MitgliedXYZ« ist der Autor dieses Themas

Beiträge: 1 369

Wohnort: Bayern

  • Private Nachricht senden

6

07.02.2012, 18:09

Was die print Funktion bedeutet, wuste ich schon, die war nur zum Testen gedacht.
Danke für die Tipps, ich werde sie morgen gleich testen (bin gerade nicht am pc, sondern mit dem iphone online)
Das der bisherige Code nicht funktionierte hat mich selbst gewundert, da ich ihn eigl. nur aus Bruchstücken von der Referenz zusammengestellt habe.

Vielen Dank aber schon mal für eure Hilfe!

Mirlix

Supermoderator

Beiträge: 451

Beruf: Developer Advocate

  • Private Nachricht senden

7

07.02.2012, 20:00

Evt auch statt OnGui lieber Update nehmen wenn es bei jedem Frame getestet werden soll, OnGui kommt nur wenn es sichtbar ist oder so, muesste man mal in die Doku schauen

MitgliedXYZ

Alter Hase

  • »MitgliedXYZ« ist der Autor dieses Themas

Beiträge: 1 369

Wohnort: Bayern

  • Private Nachricht senden

8

08.02.2012, 16:36

ich hab jetzt aus

C#-Quelltext

1
UpArrow
nur noch

C#-Quelltext

1
Up
gemacht und nun funkioniert es.
Danke für eure Hilfe, mein Problem ist gelöst :)

Werbeanzeige