Noticias

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

Cambiar el sprite en tiempo de ejecución no actualiza el nombre del sprite

Iniciado por alvaroOnCode, Julio 24, 2015, 09:21:48 AM

Tema anterior - Siguiente tema
Julio 24, 2015, 09:21:48 AM Ultima modificación: Julio 24, 2015, 09:28:38 AM por alvaroOnCode
Hola a todos,Tengo un problemilla que me tuvo todo el día de ayer atascado. He buscado por Google y no encuentro ninguna referencia al problema así que espero que podáis ayudarme.He creado desde el Editor un objecto IMAGE dentro de un Canvas con un SPRITE temporal asociado que pretendo sustituir mediante c# en función de la puntiación que se consiga. Esa parte funciona perfectamente:
img.overrideSprite = Resources.Load<Sprite>("UI/en/imageName");
La cosa es que ese objeto IMAGE tiene como componente un script que al cambiar de idioma debe modificar otra vez el SPRITE y, para ello, busco en el directorio de assets del nuevo idioma y trato de encontrar el archivo mediante el nombre del nuevo SPRITE "imageName":
img.overrideSprite = Resources.Load<Sprite>("UI/es/" + img.sprite.name);
Grande es mi sorpresa cuando veo en la escena que el objeto IMAGE que en un principio tiene asociado un SPRITE temporal cambia perfectamente a "imageName" cuando consigo X puntuación y cuado pretendo cambiar de idioma, me salta un error diciendo que no encuentra ningún SPRITE con ese nombre porque está buscando por el nombre del SPRITE temporal, no del que he cargado dinámicamente. Efectivamente, en runtime voy al Editor y, aunque la imagen ha cargado el nuevo SPRITE correspondiente a la puntuación, el objeto IMAGE tiene en la casilla del SPRITE la referencia al SPRITE temporal...¿Alguien puede ayudarme? Estoy desesperado buscando el motivo y se me acaban las ideas. Espero haberme explicado con claridad ya que esto me parece rarísimo...Gracias de antemano, un saludo.

Puede ser por que.1-  No estas utilizando la carpeta Resources -> descartar si esto error pasa cuando estas en el editor.2- Que estés aplicando mal la ruta.3- Que la función overrideSprite tenga un BUG Mi solución seria asignar con  img.GetComponent<RenderSprite>().sprite = "TU NUEVO SPRITE".Si no, pasamos el código en la parte donde falla y te doy una mano.

Etiquetas: