2016-11-02 1 views
0

Ich habe ein Spiel, das mehrere massive Levels haben wird, die ineinander fließen (es ist ein Metroidvania-Spiel), und deshalb muss ich Levels entladen, wenn der Charakter diese Bereiche verlässt, damit es das Spiel nicht zum Absturz bringt zu viel Speicher verwenden.Wie entferne ich eine Ebene mit UnloadSceneAsync, nachdem ich einen Triggerbereich verlassen habe?

habe ich schon versucht:

void OnTriggerExit2D(Collider2D coll) 
    { 
     SceneManager.UnloadScene(sceneIndex); 
    } 

aber ich habe irgendwo gelesen, dass man nicht UnloadScene aus der Physik nennen kann aus irgendeinem Grund auslöst. https://docs.unity3d.com/ScriptReference/SceneManagement.SceneManager.UnloadScene.html

Aber sie sagen, UnloadSceneAsync zu verwenden, die nicht existiert. Der Link in der Dokumentation ist kaputt und mein Programm wird nicht kompiliert, wenn ich versuche es zu benutzen.

Wie geht das vor? Wie entlädt man eine Szene, nachdem der Charakter sie verlassen hat?

EDIT: Ich habe versucht, auch diese, aber es wird nicht kompilieren:

void OnTriggerExit2D(Collider2D coll) 
    { 
     SceneManager.UnloadSceneAsync(sceneIndex); 
    } 
+0

„mein Programm wird nicht kompiliert, wenn ich versuche, es zu benutzen“ Warum nicht buchen den 'UnloadSceneAsync' Code verwendet, die nicht kompiliert werden? Sie haben nur den Code 'UnloadScene' in Ihrer Frage. – Programmer

+0

@Programmer, weil es genau wie der Code oben ist, aber mit dem Wort "Async" drin. Hinzugefügt sowieso – shieldgenerator7

Antwort

0

Die UnloadSceneAsync in Unity 5.5 hinzugefügt wurde, die noch in der Beta-Version. Die einzige Möglichkeit, Funktionen zur Verfügung zu haben, ist das Herunterladen der Beta-Version. Dies ist die documentation und Sie können die neuesten Unity 5.5 (v5.5.0b10 zum Schreiben dieser) von here.

Sie können dies überprüfen, indem Sie auf die Release Note here gehen.

Drücken Sie Strg + F und suchen Sie dann nach 'UnloadSceneAsync'. Dort heißt es:

  • Scenemanager: Added UnloadSceneAsync API, die jederzeit im Gegensatz zu UnloadScene aufgerufen werden können.

  • SceneManager: UnloadScene wurde jetzt als veraltet markiert und löst eine Ausnahme aus, wenn sie zu illegalen Zeiten aufgerufen wird. UnloadSceneAsync sollte stattdessen werden (762371)

Verwandte Themen