Noticias

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

Add.Component() como hacerlo?

Iniciado por biztor, Mayo 13, 2016, 11:29:17 AM

Tema anterior - Siguiente tema
Mayo 13, 2016, 11:29:17 AM Ultima modificación: Mayo 13, 2016, 01:36:02 PM por pioj
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?

Mayo 13, 2016, 02:02:26 PM #2 Ultima modificación: Mayo 13, 2016, 02:04:14 PM por biztor
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;
   }
}
 



[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 efectivohttp://i1.wp.com/aislacustic.com/wp-content/uploads/2015/06/espumas-acusticas.jpg" rel="external nofollow date=1463177140]http://i1.wp.com/aislacustic.com/wp-content/uploads/2015/06/espumas-acusticas.jpg

Bueno, sois unos cachondos. Solamente lo lancé una vez pero parece que el foro no está muy fino.

Etiquetas: