2016-07-22 8 views
0

Ich habe eine einzelne Leinwand, in der ein globaler UI-Bildhintergrund lebt, und 4 Rahmenobjekte. In jedem Frame-Objekt gibt es Hunderte von UI-Bildern und -Texten. In einem Frame-Objekt existieren keine Schaltflächen und keine Collider.Moving Unity UI

Während des Spiels geben Skripte die Frames durch Setzen von "frame.transform.localPosition". Wenn alle 4 Rahmenobjekte stationär sind, beträgt die Bildrate konstante 60 fps. Wenn ein Frame in Bewegung ist, fällt die fps auf etwa 33 fps und springt wieder auf, sobald die Bewegung abgeschlossen ist.

Der Profiler schlägt vor, dass die Leinwand eine Menge Arbeit macht. Was ist los? Sollen UI-Elemente in einem Canvas statisch sein?

Bild von meiner Szene: http://i.imgur.com/o3pfAt3.png

+1

Was ist ein "Rahmen"? Worauf beziehen Sie sich? – Fattie

+0

auch was ist "Frame ist in Bewegung"? –

+0

Ein Rahmenobjekt ist nur ein Objekt, das mit UI-Elementen gefüllt ist. Es sieht wie ein Bilderrahmen aus. Ich benutzte eine schlechte Wortwahl. – Tyler

Antwort

0

Wenn das, was Sie tun, ist das, was ich denke, Sie tun, Sie nicht eine einzige Leinwand mit den vier Frames in der es wollen, was Sie tun sollten ist mit 4 Leinwänden, die jeweils ein Kind eines der Rahmenobjekte sind, die Sie bewegen.

Aus dem "Tanks" -Tutorial aus Einheit, siehe the video on Tank Health. In diesem Video erstellen sie einen Gesundheitsbalken, der dem Panzer folgt, ich glaube, das ist ein ähnlicher Effekt wie das, was Sie mit Ihren Bildern und Kindern davon machen wollen.