Jump to content
Unity Insider Forum

Editor-Freeze bei zu vielen Box-Collidern


GaRv3

Recommended Posts

Hallo zusammen,

ich habe ein paar Objekte, die über seeeeehr viele Box-Collider verfügen.
Ich möchte hier bitte nicht über die Frage sprechen, ob Objekte so viele Collider brauchen. In diesem speziellen fall ist es so, da es keine andere Möglichkeit gibt, die Form des Objekts genau genug abzubilden, denn ein Mesh-Collider müsste convex sein, was in dem Kontext aber nicht funktioniert.

Mein Problem ist nun folgendes:
Beim öffnen der Szene, starten des Play Modes und selektieren eines der Objekte hängt der Editor immer für einige Sekunden.

Beim Selektieren eines Objekts liegt das in erster Linie am Rendern des Inspektors - InspectorWindow.DrawEditors() braucht mal eben 8,5s und BoxColliderEditor.OnEnable() dauert bei z.B. 562 BoxCollidern über 3,5s. Nach dem Selektieren des Objekts hängt der Editor also erst mal gute 12 Sekunden.

Schlimmer ist es beim Wechsel in den Play Mode bzw. Laden der Szene. Hier hängt der Editor mehrere Minuten, ich kann mir aber noch nicht genau erklären, wieso dies so extrem ist. Eigentlich sollte das ja nicht mit dem Inspektor zusammenhängen. Es ist auch unabhängig davon, ob ich ein Objekt selektiert habe.

Das Editorscript der Objekte setzt die HideFlags der BoxCollider immer entsprechend, sodass sie nicht im Inspektor angezeigt werden. Dadurch geht das Selektieren des Objekts ab dem zweiten mal gewohnt schnell. Anscheinend werden die HideFlags aber nicht gespeichert, sodass die Collider bei erneutem Selektieren nach dem Starten/Stoppen des Play Modes bzw. Neuladen der Szene wieder erscheinen und ich die erwähnte Verzögerung habe.

Hat jemand eine Idee, wie ich die Collider dauerhaft ausblenden kann und woher die extrem langen Wartezeiten beim Starten/Stoppen/Laden kommen?

 

Vielen Dank und beste Grüße
GaRv3

 

EDIT: Ich konnte nun zumindest herausfinden, was beim Verlassen des Play Modes den Freeze verursacht: Prefabs.MergePrefabs braucht 585 Sekunden(!). Woran kann das liegen? Ich habe zwar einige Prefabs in der Szene, aber das kann nicht normal sein und ist mir bisher so auch noch nie aufgefallen.

EDIT 2: Das erste Problem (langsames Rendern des Inspectors) habe ich nun gelöst, indem ich die HideFlags der Collider in OnEnable() des GameObjects selbst setze und nicht im dazugehörigen EditorScript. Merke: Beim Selektieren eines Objekts wird es zunächst selbst aktiviert und erst dann der Inspektor geladen.
Bleiben noch die Prefabprobleme!

EDIT 3: MergePrefabs braucht auch beim Starten des Play Modes 612 Sekunden.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Gegenfrage, brauchst du wirklich 562 BoxCollider? Was willst du denn eigentlich machen?

Zitat

ich habe ein paar Objekte, die über seeeeehr viele Box-Collider verfügen.

Wenn es nur ein paar Objekte sind, warum nimmst du statt dutzenden BoxCollidern in diesem Falle nicht lieber ein MeshCollider. Die sind zwar in der Brechnung etwas langsamer, aber denke mal immer noch bei weiten schneller als so viele BoxCollider. ;)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Archiviert

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

×
×
  • Neu erstellen...