En unity asnwers no hay nadie que sepa como hacer esto, confió en los expertos aquí.He probado de mil formas, esta es la ultima
public T ElegirScript<T>()
{
switch((int)tipoEdificio) // es un enum
{
case 0:
return PlantaEnergia); // es una clase
break;
case 1:
return Edificios); // clase
break;
}
}
void prueba<T>(T scrip,GameObject objeto) where T: Component
{
objeto.AddComponent<T>();
}
La idea es añadir a un gameobject un script en tiempo de ejecucion, pero dependiendo de unos parametros que añada uno u otro. he probado con funciones que retornan TYPEOF, y luego al hacer el addcomponent, llamar a este metodo, pero nada. De todas las formas que lo intento no hay manera.Hay alguna manera de hacer esto? organizar clases, o scripts, y luego al añadir el componente, pasarle esa clase o script? no instancias. gracias.
Ese enum con el casting a int me chirría y devuelves siempre T. Entonces es porqué luego no necesitas acceder a propiedades particulares de la clase? Si es así, con derivarlas de una misma clase o de una Interface común puedes devolver ese objeto base.Luego, que significa devolver una clase o script y no la instancia? Devolver la definición y no la declaración?
no me di cuenta del casting, lo que queria era darle el tipo de componente directamente en la declaracion del AddComponent, al final he hecho asi. Si es que hay veces que hago burradas... la falta de costumbre.Asi, luego ya creo el objeto directamente.
public void ElegirScript(GameObject objeto)
{
switch(tipoEdificio)
{
case TipoEdificio.Energia:
objeto.AddComponent<PlantaEnergia>().Crear(tipoEdificio);
break;
case TipoEdificio.Muro:
objeto.AddComponent<Edificios>().Crear(tipoEdificio);
break;
default:
break;
}
}
Perfecto
hay eco...
[quote author=Braltor" data-ipsquote-contapp="forums" data-ipsquote-contenttype="forums" data-ipsquote-contentclass="forums_Topic" data-ipsquote-contentid="35856" data-ipsquote-contentcommentid="130818">hay eco...[/quote]Comprate esto, es muy efectivo
Título: Add.Component() como hacerlo?
Publicado por: iRobb en Mayo 14, 2016, 04:13:47 AM
Bueno, sois unos cachondos. Solamente lo lancé una vez pero parece que el foro no está muy fino.