Jump to content
Sign in to follow this  
KaryBlack

Coger objetos del proyecto en script

Recommended Posts

Hola, estoy con un proyecto en el que, básicamente, hay un texto y unas acciones dadas entre las que elegir en pantalla. Llamémosles "situaciones". Mi idea es hacer un Random para elegir al azar qué otras situaciones van llegando al jugador. Dado que cada situación es distinta y tiene distintas opciones, lo pensaba separar en prefabs (Cambiar el texto, botones y demás desde el mismo objeto no me funcionó muy bien). El caso es que no quiero llenar la ventana de inspector de espacios para prefabs que adjuntar desde el proyecto. ¿Hay alguna forma de, desde el mismo script que controla cada situación, coger un prefab u objeto en general del proyecto?

Por ejemplo, si cada prefab fuera una carta. He visto tutoriales para hacer cartas prediseñadas, que no son prefabs sino un objeto personalizado, guardadas en otra carpeta. Si tengo una carta con un botón de transformarse, y ese botón llama a un evento de script en el que genera un azar para cambiarla por una de entre 300 cartas que haya creado, ¿cómo se tiene que escribir el código? Porque poner 300 espacios para prefabs sería eterno (y supongo que imposible por límite de inspector).

Lo que busco es una forma de que desde el mismo script lo busque y lo escoja, sea en la carpeta que sea, tal vez dándole el nombre con una ruta... Yo me imagino algo como la diferencia entre "Text texto", que luego le tienes que adjuntar el objeto text desde el inspector, y "GameObject.Find("texto")GetComponent<Text>()", que ahí cuando se ejecuta lo busca solito.

Espero haber explicado bien este problema xD ¿Se puede hacer entonces?

 

Share this post


Link to post
Share on other sites

hola

existe la funcion Resources.Load

tienes que crear una carpeta dentro de assets que se llame "Resources" y meter las cosas ahi... (puedes hacer carpetas dentro de esa carpeta para tener las cosas ordenadas)

 

si es solo texto lo que quieres cargar te recomiendo que lo hagas en un "xml" y leas el texto desde el.

 

...de todas formas poner 300 prefabs en el inspector si se puede hacer. puede poner un array de gameObjects (public GameObject[] prefabs;)  y poner ahi todos los que quieras.

Edited by Igor
  • Thanks 1

Share this post


Link to post
Share on other sites

Gracias por las ideas^^ no es sólo texto lo que quería cargar sino toda la "ventana", con texto, botones, imágenes, comportamientos... digamos que una ventana te explica que tienes que recorrer un bosque y tienes un botón que te hace ir avanzando hasta que lo consigues, otra ventana te pregunta un nombre y tiene un input para escribirlo... por eso había optado por el prefab entero.

Probaré ambas opciones, el Resources.Load me parece que es precisamente lo que me imaginaba jeje muchas gracias!

Edito: El Resources.Load debe ser que no he sabido usarlo porque no logro instanciar nada, me dice que el objeto que intento instanciar es nulo... pero con un array de prefabs sí he podido introducir nuevos elementos, añadiendo un arreglo para hacerlos hijos del mismo Canvas. Así ha quedado:

public GameObject[] prefabs;

public void CambioSuceso()
    {

/*Método Resources.Load: devuelve null         
GameObject instance = Instantiate(Resources.Load("Assets/Resources/Suceso2", typeof(GameObject))) as GameObject;
*/

//Método Array de prebafs
Instantiate (prefabs[0],this.transform.position, this.transform.rotation,this.transform.parent);
                
    }

 

La cosa ya puede avanzar, aunque si alguien me puede explicar un poco más del método con Resources.Load, ya aprendo algo más xD gracias!

Edited by KaryBlack

Share this post


Link to post
Share on other sites
Sign in to follow this  

×
×
  • Create New...