2016-04-20 9 views
3

Ich habe ein Problem mit meiner Webanwendung, wenn ich die aktuelle Seite nach dem Herunterladen und Ausführen eines Unity WebGL Spieles ändere.Wie säubere und lösche ich ein Unity WebGL-Canvas, wenn ich die Seite ändere

In der Tat, ich weiß sicher, dass das Spiel läuft, weil ich kontinuierlich die Töne höre, wenn mein Spieler stirbt.

Gibt es eine Möglichkeit, den gesamten Kontext beim Ändern einer Webseite zu löschen? Könnte das eine Art Speicherleck sein?

Edit 1: Meine Web-Anwendung mit AngularJS/Material

+0

Dies ist sicher Unity-Fehler. Sie können jedoch ein Browser-Skript erstellen, um das Entladen aller geladenen Objekte zu erzwingen. –

+0

Die Sache ist, dass ich nicht wirklich weiß, was von Unity geladen wird. Wie bekomme ich das, ohne meine eigenen Skripte zu entladen? – MadJlzz

+1

Es gibt etwa 5-10 Dateien, die von Unity erzeugt wurden, entlade sie alle (YourBuildName.data, YourBuildName.html.mem, YourBuildName.js, etc.) Edit: Ich denke, die sind im 'Release' oder' Debug' Ordner abhängig von a build –

Antwort

2

Die Lösung ist einfach getan wird: laden Einheit in einem iframe die WebGL, Sandkästen dies die Anwendung.

Wenn Sie mit der Einheit App fertig sind nur den Knoten der wie iframe entfernen:

var iframe=...; 
iframe.parentNode.removeChild(iframe); 

Und es und alle Ressourcen der es sollte sofort entladen.

Sie können nicht direkt mit dem Unity-Player kommunizieren, wenn Sie sich in einem Iframe befinden, aber Sie können weiterhin Nachrichten an und von ihm mitübergeben.

+0

Vielen Dank für Ihre Antwort. Ihre Lösung sieht ziemlich gut aus und interresiert, aber sobald ich meine Einheits-WebGL in einen Iframe lege, sucht sie nicht einmal nach Ressourcen. – MadJlzz

+0

Das sollte nicht passieren, kannst du noch mehr Infos geben? Web-Entwicklung Konsole Protokolle, Online-Demo mit dem Problem usw.? –

+0

Nun, ich antworte schnell. In der Tat, mit der rohen 'index.html', die Unity generiert, wenn Sie Ihr Spiel erstellen, funktioniert es (und die Daten werden entladen, ohne etwas zu tun). Die Sache ist, dass ich versuchte, AngularJS-Werte direkt durch den iframe zu übergeben. Ich denke, ich habe keine andere Lösung, um die GET-Methode der alten Schule zu verwenden. Oder ist es möglich, mit postMessage AngularJS-Daten zu übergeben? – MadJlzz