Noticias

¡RECUERDA QUE SI ERES UN NUEVO USUARIO, DEBES PRESENTARTE PARA PODER PUBLICAR MENSAJES! | TENEMOS CANAL OFICIAL DE TELEGRAM: t.me/unity3dspain

Dudas sobre instanciar o crear dinamicamente Gameobjects

Iniciado por biztor, Junio 04, 2015, 01:27:17 PM

Tema anterior - Siguiente tema
Buenas, la cosa es simple, Tengo prefabs de: tablero, personaje y enemigo. Todos ellos sin script. No se cual es la mejor forma.
 
1- Creo los prefabs, con sus scripts,para darles la funcionalidad, todos los scripts se comunicaran con el Script que lleve la lógica del juego y viceversa. En el Script de la lógica del juego, instancio los prefabs. Esto creo que es lo mas caro en temas de rendimiento.
 
2- Tampoco se exactamente si se hace asi. Tengo el script central, dentro creo una clase jugador, enemigo, etc. Con las funcionalidades. Y creo un objeto de esa clase al que le tendria que añadir luego el rigidbody, el sprite renderer y esas cosas. En vez de instanciar, crearlo dinamicamente con new Gameobject, y ejecutar sus métodos, que estaría todo en su propia clase, metido a su vez todas en el script de lógica, con lo que no hay que buscar el gameobjetc ni hacer llamadas.
 
No se si voy bien encaminado, hasta ahora no había usado las clases y constructores, creaba los gameobjects y su script asociado e iba comunicandolos buscando el gameobject por tag, o raycasting etc. Pero estoy ahora con tutoriales de unity intermedio, y veo que se puede ahorrar trabajo orientadolo a objetos en vez de a componentes, o eso creo yo. 
 
Quería aprender como se haría este caso, alguien sabría explicarme? gracias.
 
 


Yo he utilizado diferentes metodos:
 
1. De forma independiente: Utilizando GetComponent.
2. Creando una clase global estatica.
3. Utilizando Herencia de clases y variables estaticas.

Junio 04, 2015, 06:52:49 PM #3 Ultima modificación: Junio 04, 2015, 06:58:39 PM por pioj
Bueno, a mi me parece que lo estás haciendo bien. Hay muchas formas de organizar los assets y prefabs.
 
 
Lo que llevo leyendo es la tendencia actual a no crear Prefabs anidados, y en su lugar usar un script que los anide las instancias por código, en runtime. Se vé que es más eficiente y sobretodo más seguro. Lo que pasa es que cuando el Artista te manda un personaje, vete tú a saber lo que te vas a encontrar allí dentro XDDD....
 
 
 
Yo tiro últimamente de .assets creados desde Unity, para guardar datos como si fueran ficheros, con todo lo que necesiten. Estos a la vez pueden tener gameobjects, y tal...
 
Y luego creo prefabs que recojan de esos datos. Es lo que recomiendan los creadores de Unity, así que por algo será...

bueno, entonces alguien me puede explicar un ejemplo que use el método este de objetos? porque no lo entiendo/veo el uso.

Junio 04, 2015, 09:52:17 PM #5 Ultima modificación: Junio 04, 2015, 09:57:21 PM por kaito
Cita de: pioj date=1433436769Lo que llevo leyendo es la tendencia actual a no crear Prefabs anidados, y en su lugar usar un script que los anide las instancias por código, en runtime. Se vé que es más eficiente y sobretodo más seguro. Lo que pasa es que cuando el Artista te manda un personaje, vete tú a saber lo que te vas a encontrar allí dentro XDDD....
Y luego creo prefabs que recojan de esos datos. Es lo que recomiendan los creadores de Unity, así que por algo será...
Y que tiene que ver eso  con la forma de scripting?
En que mejora la forma de acceder a los componentes?
Seria mejor que utilizar GetComponent?
Te lo pregunto porque a mi si me interesa el tema que has citado sobre crear un .asset para crear un prefab. Supongo que es por el tema de actualizaciones.

Bueno, pregunto otra duda.
 
Tengo creada la clase jugador, que hereda de Monobehaviour. Le creo sus variables, sus metodos, sus constructores, etc. Luego en otro script, que hereda de jugador, pongo
 
Jugador jugador=new Jugador(1,2,3);
 
bien, pues ahora no puedo acceder a la instancia, osea no puedo usar jugador.
 
jugador.vida
jugador.mover()
 
nada, no lo entiendo que hago mal.


Claro. Una cosa es crear la instancia, otra es recogerla y usarla...
 
@kaito, te respondo a todo por PM.

Etiquetas: