Tengo un arreglo de gameObject y quiero cambiar un GameObject que tengo en mi codigo, por uno de mi lista. Mi función esta más o menos así;
using UnityEngine;
using System.Collections;
public class EditPlayer: MonoBehaviour {
public gameObject [] Objetos;
public void cambiarobject (int indice){
Objeto = gameObject.Find("modelo");
Objeto = Objetos [indice];
}
}
Pero obviamente no me funciona, alguien me puede decir porque? (% el arreglo de gameObject's lo cargo en la interfaz gráfica del Unity)
Que quieres cambiar o instanciar un gameObject?
Porque ahi estas asignando valores a Objeto dos veces.
El chiste es que quiero que mi personaje se cambia la armadura, en este caso tengo una lista de GameObject's con todos los Modelos con los que cuenta mi juego, este Scrip es para cambiarlos
Entonces ese no es el camino, primeramente deberias destruir/ocultar el objeto que quieres remplazar y luego instanciar/mostrar el objeto que quieras poner.
En youtube hay muchos tutoriales de esto, echale una visita
Te lo escribo en PseudoCodigo varias cosillas sueltas como dice @GSG3D (http://unityspain.com/profile/23667-gsg3d/)
variable ArmaduraActual = Crear(ArmaduraInicial...)
funcion cambiarArmadura(Armadura){
Destruir(ArmaduraActual);
ArmaduraActual = Crear(Armadura);
}
De hecho si pude, un amigo del trabajo me ayudo con el código y quedo así;
using UnityEngine;
using System.Collections;
public class EditPlayer: MonoBehaviour {
public gameObject [] Mayas;
public gameObject Maya;
public string Objeto;
public void ChangedModel (int indice)
{
Maya = GameObject.Find (Objeto);
Maya = (GameObject)Instantiate (Mayas [indice], transform.position, transform.rotation);
Maya.transform.parent = GameObject.Find ("Body").transform;
Maya.transform.localPosition = Mayas [indice].transform.localPosition;
Maya.transform.localRotation = Mayas [indice].transform.localRotation;
Maya.transform.localScale = Mayas [indice].transform.localScale;
Destroy (GameObject.Find (Objeto));
Maya.name = Objeto;
}
}