Unity Spain

Post Antiguos => General (Antiguo) => Mensaje iniciado por: unityFer en Junio 02, 2016, 09:13:50 PM

Título: Error al instanciar cuando compilo (C#)
Publicado por: unityFer en Junio 02, 2016, 09:13:50 PM
Saludos, tengo un problema grave, me explico. 


Tengo enemigos que al morir explotan, en el editor de unity me va perfecto, cuando muere uno instancia la explosión, pero al compilar me tira error cuando mato a alguno y me pone lo siguiente:
 
ArgumentException: The thing you want to instantiate is null.
 
Tengo la explosión en una carpeta que se llama resources y la llamo en el script de la siguiente manera:
 
 
 
(https://i.gyazo.com/3181df4d0557f341a403e4d9ad5b1257.png)
Título: Error al instanciar cuando compilo (C#)
Publicado por: J_L en Junio 02, 2016, 10:40:01 PM
Buenas unityFer. Nunca se me ha dado el caso y no lo he probado, ya que aquí no tengo Unity instalado pero creo que tienes que decirle el tipo que tienes que cargar.
 
Resources.Load("ExplosionEnemigo", typeof(GameObject), ... blablablá) as GameOject;
 
Como no te cuesta nada probarlo pues ya me dirás como te ha ido.
Título: Error al instanciar cuando compilo (C#)
Publicado por: unityFer en Junio 02, 2016, 10:43:07 PM
usé ésto y sigue igual, al compilar tira error al matar a uno.
 
el prefab está asignado en el inspector, no se de que otra forma puedo hacer que al impactar el proyectil salga una explosión, es que no tiene sentido.

GameObject ExplosionEnemigo = Instantiate(Resources.Load("ExplosionEnemigo", typeof (GameObject)), gameObject.transform.position, gameObject.transform.rotation) as GameObject;


Tal que así 


(https://i.gyazo.com/a2536e3bd207e15f13583356ad125282.png)
 
 
Título: Error al instanciar cuando compilo (C#)
Publicado por: iRobb en Junio 02, 2016, 10:58:06 PM
Pero si primero te destruyes a ti mismo con Destroy(this.gameobject)? Lógico que luego no pase nada.
 
Además, el instantiate tiene que ser con el tipo de objeto. Entiendo que el explosión enemigo tendrá algo más que un gameobject. Tendrá un script no?
Título: Error al instanciar cuando compilo (C#)
Publicado por: unityFer en Junio 02, 2016, 10:59:15 PM
el prefab de la explosion cuenta con un script aparte, si


La cosa es la siguiente: Destruyo el proyectil, luego se instancia en el sitio una explosion, en unity funciona, y explota, el problema viene al compilar
 
 
Título: Error al instanciar cuando compilo (C#)
Publicado por: iRobb en Junio 02, 2016, 11:01:24 PM
Y repito:  Pero si primero te destruyes a ti mismo con Destroy(this.gameobject)? Lógico que luego no pase nada y no se ejecute nada más.
 
Si el script se llama explosionEnemy pues el instantiate debe ser con el script tipificado. Es decir explosionEnemy ee = instantiate(...) as explosionEnemy.
Título: Error al instanciar cuando compilo (C#)
Publicado por: unityFer en Junio 02, 2016, 11:08:52 PM
Cambiandolo y poniendolo al final sigue dando error cuando hago Build del juego. no tengo ningun script a instanciar, o sea, el script que tiene la explosion es para eliminarla aparte cuando pasen x segundos.
 
 
 
 
Título: Error al instanciar cuando compilo (C#)
Publicado por: iRobb en Junio 02, 2016, 11:15:14 PM
No entiendo eso que dices. Creo que deberías hacer algún tutorial o más tutoriales, porqué hablamos idiomas diferentes
Título: Error al instanciar cuando compilo (C#)
Publicado por: unityFer en Junio 02, 2016, 11:17:21 PM
a ver, cuando le doy al play funciona.


Cuando compilo todo el juego para hacer el ejecutable no. Y es ahi cuando me sale el error.
 
Disculpa mis modales, llevo menos de un año, soy nuevo en ésto.
Título: Error al instanciar cuando compilo (C#)
Publicado por: iRobb en Junio 02, 2016, 11:21:05 PM
Esto que contiene en el instantiate?
 
gameObject.transform.position, gameObject.transform.rotation
 
 
Título: Error al instanciar cuando compilo (C#)
Publicado por: unityFer en Junio 02, 2016, 11:24:41 PM
Las coordenadas donde se va a instanciar la explosión, con ésto instancio en el lugar donde se destruye el proyectil.
Título: Error al instanciar cuando compilo (C#)
Publicado por: iRobb en Junio 02, 2016, 11:30:28 PM
Si hace un debug, verás que te destruyes a ti mismo ya que haces un Destroy(this.gameObject) antes. Eso quiere decir que, todo el código que viene después no va a ejecutarse nunca.
 
Por qué te pasa en el build y no en el Play? El Destroy no es inmediato y en el play te funciona. Puedes utilizar DestroyInmediate pero no es recomendable por el garbage collector, aunque el tema es que te autodestruyes. No puedes hacer eso, por lógica. El destroy de ese gameobject tiene que hacerse desde otro gameobject.