Problemas rendimiento Unity3D android

O

hola tengo estoy haciendo un juego en unity estilo tower attack en el que poodes mandar oleadas de bichos a atacar una ciudad
el problema es que podes llegar a tener 200 o mas bichos en pantalla y anda re lento, desactive vsinc use spite package no uso getcomponen un ninguna parte del codigo pues en el start de cada objeto referencio todas las cosas que valla a usar asi no estoy entrando a la funcion constantemente, y son Gameobjects con colliders y un GamObject de hijo con otro collider todos con rigidbody kinematic, cuando tengo 40 bichos en pantalla se empieza a arrastras incluso en pc,

si alguno tiene idea de que puedo hacer o que puede ser el problema estaria agradecido xD

aca dejo los scripts:

ScriptGoblin
ScriptEnemyManager
RangerGoblin
Czhincksx

Ponte el Profiler en una ventana con el deep profile activado y mira a ver dónde estás consumiendo más recursos.

1 1 respuesta
B

#1 te iba a preguntar por la cantidad de vértices de cada "bicho"...
...pero mejor sigue la respuesta de #2 que con el profiler vas a tiro fijo.

O

O

eso son 100 bichos en pantalla nomas u.u uno al lado del otro

1 respuesta
Czhincksx

#5 ¿Cómo están compuestos esos bichos? ¿Todos tienen Rigidbody? ¿Cuántos colliders tienen? ¿Alguno está marcado como static? ¿La matriz de colisiones está bien configurada? ¿A qué valor tienes el fixedUpdate?

Da la sensación de que están colisionando unos con otros todo el rato y llamas mucho al OnTriggerEnter y OnTriggerExit.

1 respuesta
O

#6 todos tienen rigidbody tienen 1 collider y dentro otros 2 GameObject con 1 ColliderBox2D cada uno tamb con RigidBody, no son static, y no hay matriz de colisiones ya que preciso que todos choquen con todos y el fixed update esta por defecto

1 respuesta
Czhincksx

#7 Sólo necesitas que tenga rigidbody el padre, aunque no creo que sea la causa principal del problema.

1 respuesta
O

#8 puede ser que MovementTarget() este dando poblemas? si saco eso los bichos no se mueven pero mejora bastante capas el problema es mover muchos objetos juntos usando transform.translate??

1 respuesta
Czhincksx

Prueba a comentar las funciones de OnTriggerEnter/Exit

Estoy viendo ahí un getcomponentinparent sospechoso. Si sólo quieres el componente del padre directo es mejor que lo busques como transform.parent.getcomponent().

#9 si quieres comenta el transform.translate y pruebas, pero también puedes optimizar quitando el .magnitude que tienes ahí y cambiandolo por un sqrmagnitude (comparándolo con el.cuadrado del otro valor) y así te ahorras una raíz.

2 respuestas
O

#10 si comento myTransform.Translate(direction.normalized * distanceInFrames, Space.World); anda de lujo :psyduck: pero no se como o porque eso genera tanto problema

O

#10

1 respuesta
Czhincksx

#12 Prueba a moverlos con el rigidbody, es lo recomendado.

rigidBody.MovePosition(Vector3.MoveTowards (this.transform.position, currentDestination, speed));

(Esa línea es de un juego mío, no es para que la uses tal cual, pero te haces una idea supongo)

2

Usuarios habituales

Tags