UNITY: Como instanciar un objeto y pasarle parametros

Potito

Estoy liado con un script, me gustaría instanciar una bala por ejemplo, y en el momento de instanciarla, dependiendo del contexto, darle unos valores u otros, como por ejemplo el daño que hace, la velocidad de inicio, aceleración etc...

Como lo haríais vosotros?

Tambien podria servir a la hora de cargar un NPC, darle unos valores determinados como nombre, armadura, vida, etc...

storm2211

usa el Instantiate, referenciando un gameobject y luego usa GetComponent() para pillar el script que buscas

1
qunram

cuando haces un instantiate, lo que te devuelve es el objeto y puedes hacer un GetComponent del Script al q quieras acceder del objeto, por ejemplo, si tengo una Bala y el script que controla el daño y la velocidad q hace se llama "BalaControlador" el código sería algo así:

public GameObject bala; // aqui pondriamos el prefab desde el editor del la bala

// metodo que llamamos para crear la bala
void CrearBala()
{
// instanciamos la bala
GameObject newBala = (GameObject) Instantiate(bala, transform.position, transform.rotation);

// accedemos al script con los valores iniciales
BalaControlador balaControl = newBala.GetComponent<BalaControlador>();
balaControl.Speed = 100;
balaControl.Damage = 30;
}

Lo he escrito sobre la marcha, es posible q tenga errores de sintaxis, por cierto, una vez dicho esto, no te recomiendo usar instancias a saco, me crearía un pool de objects ;)

3
13500

Tambien puedes personalizar el constructor de la clase "objeto" para pasarle por parametros los atributos que quieras, y que dentro se asignen estos atributos y se instancie, incluso cargando el recurso desde la libreria de assets sin necesidad de asignarselo como objeto publico a nada

1

Usuarios habituales

  • 13500
  • qunram
  • storm2211
  • Potito