Unity Spain

Post Antiguos => General (Antiguo) => Mensaje iniciado por: biztor en Mayo 13, 2016, 11:29:17 AM

Título: Add.Component() como hacerlo?
Publicado por: biztor en Mayo 13, 2016, 11:29:17 AM
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.
Título: Add.Component() como hacerlo?
Publicado por: iRobb en Mayo 13, 2016, 01:40:20 PM
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?
Título: Add.Component() como hacerlo?
Publicado por: biztor en Mayo 13, 2016, 02:02:26 PM
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;
   }
}
 
Título: Add.Component() como hacerlo?
Publicado por: iRobb en Mayo 13, 2016, 05:19:27 PM
Perfecto
Título: Add.Component() como hacerlo?
Publicado por: Braltor en Mayo 14, 2016, 12:05:40 AM
hay eco...
Título: Add.Component() como hacerlo?
Publicado por: leocub58 en Mayo 14, 2016, 02:47:38 AM
[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.