2016-05-16 14 views
1

Ich machte ein einfaches Spiel in Einheit. Ich möchte, dass dieses Spiel Daten vom Socket als Server liest. Datei mit dem Namen Socket.cs, erstellt einen Server und hört Port 8000 ab, wenn ich diese Datei in Visual Studio ausführe, funktioniert es. Ich möchte diese Datei ausführen, wenn das Einheitsspiel gestartet wurde. Das Problem ist hier, das Spiel startet, aber die Datei socket.cs wurde nicht gestartet. Socket.cs wird im Unity-Spiel im Verzeichnis "Assets" abgelegt.Unity-Socket-Programm läuft nicht

Der Code i für Socket-Server in C# verwendet: http://paste.ubuntu.com/16466625/

Können Sie mir helfen socket.cs Datei starten bitte, wenn das Spiel gestartet wurde?

Danke

Antwort

3

Zu allererst die Einheit nicht über eine Main Funktion wie ein normales C# Programm. Wenn man also einen Code in public static void Main() steckt, wird nichts passieren. Unity verwendet Start() und andere ähnliche Funktionen als Ausgangspunkt, nicht Main().

Socket.cs auf Vermögenswerte Verzeichnis in Einheit Spiel gesetzt

einfach ein Skript in den Asset-Ordnern platzieren, bedeutet nicht, es funktioniert. Sie müssen das Skript von einem anderen Unity-Skript aus instanziieren oder das Skript an ein GameObject anhängen.

Auch wenn der Code in Unity funktioniert, würde Unity einfrieren, da der Socket-Code synchron statt asynchron ist. Es wird blockiert, während Sie lesen oder darauf warten, dass der Client eine Verbindung herstellt.

Sie sollten es entweder mit einem Thread machen oder asynchronous Socket verwenden.

Here ist abgeschlossen Unity TCP-Server, der in Unity funktioniert. Es verwendet Thread.

Ich schlage vor, Sie lernen, wie die Einheit funktioniert. Lerne das Grundlegende.

+0

das ist ein sehr wertvoller Link. – Fattie

+0

@JoeBlow Danke. Es gab über 4 Fragen über Socket in Unity diese Woche und dieser Link löste alle von ihnen. – Programmer

+1

Vielen Dank für Ihre Hilfe. Tolle Erklärung :) –