Jump to content
unityFer

Error al instanciar cuando compilo (C#)

Recommended Posts

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:

 

3181df4d0557f341a403e4d9ad5b1257.png

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites

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í 


a2536e3bd207e15f13583356ad125282.png

 

Edited by unityFer

Share this post


Link to post
Share on other sites

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?

Share this post


Link to post
Share on other sites

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

 

Edited by unityFer

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites

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.

 

 

Edited by unityFer

Share this post


Link to post
Share on other sites

No entiendo eso que dices. Creo que deberías hacer algún tutorial o más tutoriales, porqué hablamos idiomas diferentes

Share this post


Link to post
Share on other sites

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.

Edited by unityFer

Share this post


Link to post
Share on other sites

Esto que contiene en el instantiate?

gameObject.transform.position, gameObject.transform.rotation

 

Share this post


Link to post
Share on other sites

Las coordenadas donde se va a instanciar la explosión, con ésto instancio en el lugar donde se destruye el proyectil.

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites

UnitySpain © Todos los derechos reservados 2020
×
×
  • Create New...