Jump to content
Unity Insider Forum

Aufruf von Methoden aus REST Webservices


Jamesbob

Recommended Posts

Ich habe ein „kleines“ Problem betreffend dem Empfangen und Senden von Daten zwischen Unity und Webservices. In einem Projekt soll ich Daten aus zwei verschiedenen Diensten in Unity synchronisieren. Das Ganze soll mittels REST Schnittstellen implementiert werden. Ich soll also mittels HTTP Aufrufen (GET, POST, usw.) Methoden von den Webservices aufrufen. Im ersten Dienst sollen Koordinaten abgespeichert werden, die ein Modell ablaufen soll. Der zweite Dienst soll die Animationen enthalten. Bspw. Laufe von A nach B und renne dann von B nach C.

In Unity soll das dann zeitlich synchronisiert werden. Das Modell soll ja nicht auf der Stelle laufen oder sich entlang des Pfades bewegen ohne dass eine Animation abläuft. Intern im Editor gibt es da ja einfache Möglichkeiten mit NavMesh und AnimationStateMachines, aber das Ganze soll ja über Webservices erfolgen.

Meine bisherige Vorgehensweise sieht so aus: Ich habe zwei WCF-Services erstellt, auf denen ich dann mittels einer GET-Anweisung zugreifen möchte. Der erste enthält nur zwei Vektoren, die ich dann nacheinander von der Figur ablaufen möchte. Das klappt bisher auch.

Der andere Dienst macht mir Probleme. Dieser soll zwei Animationszustände (Walk und Run) bereit halten. Ich hab das wie folgt probiert:

[OperationContract]
[WebGet(UriTemplate = "/walk", ResponseFormat = WebMessageFormat.Json)]
void walkAnim();
[OperationContract]
[WebGet(UriTemplate = "/run", ResponseFormat = WebMessageFormat.Json)]
void runAnim();

public void walkAnim() {
  Animator animation;
  animation.SetBool("walk", true);
}

 

So sieht mein Service und die dazugehörige Methode aus. Wenn die Methode aufgerufen wird, soll er die Animation der Figur auf Laufen stellen. Der Aufruf aus dem Script in Unity, welches an meiner Figur hängt, wollt ich dann wie folgt realisieren:

IEnumerator Anim() {
 WWW w = new WWW ("http://localhost/RestService2/walk");
 yield return w;
}

 

Das klappt so natürlich nicht und mir gehen nun die Ideen aus. Ich habe schon sehr viel auf Google verbracht, um eine Lösung zu finden aber ohne Erfolg. Deswegen hier mein erster Post in der Hoffnung, dass ihr mir helfen könnt. Mir fällt es schwer, den richtigen Einstieg für die Implementierung der Animationen zu finden. Könnt ihr mir da ein paar gute Seiten für den Einstieg empfehlen? Wie rufe ich Animationen aus einem Webservice auf? Welche Möglichkeiten der Synchronisierung gibt es? Wie würdet ihr dort vorgehen?

Für jede Antwort bin ich euch dankbar. Viele Grüße

Link zu diesem Kommentar
Auf anderen Seiten teilen

Fehlt da eigentlich kein loop und sowas wie WaitForRequest? Wie bekommt der Server denn mit das eine Eingabe erfolgt ist und ein update stattfinden muß?

 

Ansonsten denke ich, dass Mark sich gut mit Webservices auskennen dürfte.

Kannst Dir auch mal einen seiner threads anschauen, vielleicht ist da was für Dich dabei. :)

 

http://forum.unity-community.de/topic/7585-servant-webservices-fur-jeden/

Link zu diesem Kommentar
Auf anderen Seiten teilen

public void walkAnim() {
	  Animator animation;
	  animation.SetBool("walk", true);
}

Du deklarierst hier zwar die Variable animation aber sie wird nicht initialisiert.

Hier fehlt doch irgendwie daß du dir den Animator des aktuell geladenen und zu animierenden Models holst.

 

animation = GetComponent<Animator>();

 

Und das idealer Weise nur einmal beispielsweise in der Start Methode. Z.B. wie dort http://unity3d.com/learn/tutorials/modules/beginner/animation/animator-scripting beschrieben.

 

Vielleicht habe ich dich aber auch falsch verstanden und dein Problem ist eigentlich ein ganz anderes.

 

Hat das eigentlich einen besonderen Grund daß du REST mit JSON machst statt Unity RPC?

Muß es http sein?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Archiviert

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

×
×
  • Neu erstellen...