Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: aspiazu en 5 Abril 2017, 22:01 pm



Título: Leer carpetas y sub carpetas C# unity
Publicado por: aspiazu en 5 Abril 2017, 22:01 pm
Buenas.

Necesito que mi programa lea las carpetas que tengo dentro de una carpeta,y lea los archivos que tengo dentro de esas carpetas (en este caso un .exe y unos .png)

El objetivo es que por cada carpeta que exista, se cree un botón con la imagen que hay dentro de esa carpeta y al dar click que se ejecute el .exe que hay dentro de la carpeta también.

if (Directory.Exists(rutasapp)) {
            foreach (string dataApp in Directory.GetDirectories(rutasapp)) {
                AppButton button = Instantiate(buttonPrefab);
                button.transform.SetParent(layout);

                //buscamos todos los ficheos que sean .exe y los guardamos en data
                foreach (string data in Directory.GetFiles(@dataApp)) {
                    if (Path.GetExtension(@data) == ".exe") {
                        //al clicar el boton ejecutamos el exe que hemos guardado anteriormente .NO FUNCIONA
                        button.GetComponent<Button>().onClick.AddListener(() => Process.Start(data));
                        UnityEngine.Debug.Log(data);

                    }
                    //buscamos todas las imagenes que sean .png y las guardamos en imagenes
                    foreach (string imagenes in Directory.GetFiles(@dataApp)) {
                        if (Path.GetExtension(@imagenes) == ".png") {
                            //UnityEngine.Debug.Log(imagenes);
                        }
                    }
                }
            }
        }
    }
Tengo ese codigo que funciona maso menos bien.Me crea unos botones por cada carpeta que tengo y luego busco los archivos que son .exe y .png y los guardo en data y imágenes.

Cuando agrego esta linea para que se ejecute el .exe, al intentar ejecutar el programa me da el siguiente error:

    button.GetComponent<Button>().onClick.AddListener(() => Process.Start(data));

NullReferenceException: Object reference not set to an instance of an object
¿Alguna idea de como hacerlo?