selector de archivos hololens

Goizane Serna Requejo 0 Reputation points
2023-04-18T11:39:26.0633333+00:00

Estoy creando una aplicacion en unity para las hololens y quiero crear un selector de archivos. Los archivos que emplearé en la aplicación estarán guardados en persistent data path. Uso el siguiente código:

  • Aquí consigo el nombre de los archivos que hay en dicha carpeta:
public class cargarDICOM : MonoBehaviour
{
    private List<string> archivos = new List<string>();
    public GameObject objetoTextoPrefab;
    public GameObject pantalla1;
    public GameObject pantalla2;
    public GameObject pantalla3;
    // Start is called before the first frame update
    void Start()
    {
        //inicializamos la aplicacion solo con esta pantalla a la vista.
        pantalla1.SetActive(false);
        pantalla2.SetActive(false);
        pantalla3.SetActive(false);

        //vaciamos la carpeta StreamingAssets, para que empiece vacia.
        /*
        string path = Application.streamingAssetsPath;

        string[] files = Directory.GetFiles(path);

        foreach (string file in files)
        {
            File.Delete(file);
        }
        */

        //conseguimos los archivos que hay en la ruta de la aplicacion, donde esta la imagen DICOM almacenada

        try
        {
            foreach (string file in System.IO.Directory.GetFiles(Application.persistentDataPath))
            {
                archivos.Add(file);
            }
        }
        catch (Exception ex)
        {
            Debug.LogError("Error al leer archivos: " + ex.Message);
        }

        //visualizo los nombres de los ficheros

        if (archivos.Count == 0)
        {
            GameObject objetoTexto = Instantiate(objetoTextoPrefab, transform);
            Text textoComponente = objetoTexto.GetComponent<Text>();
            textoComponente.text = "NO HAY ARCHIVOS EN LA RUTA DE LA APLICACION.";
            // Obtener el componente RectTransform del objeto
            RectTransform rt = textoComponente.GetComponent<RectTransform>();
            // Establecer la altura del objeto a 100 unidades
            rt.sizeDelta = new Vector2(rt.sizeDelta.y, 25);


            GameObject objetoTexto2 = Instantiate(objetoTextoPrefab, transform);
            Text textoComponente2 = objetoTexto2.GetComponent<Text>();
            textoComponente2.text = "POR FAVOR, AÑADA ARCHIVOS DICOM.";
            // Obtener el componente RectTransform del objeto
            RectTransform rt2 = textoComponente2.GetComponent<RectTransform>();
            // Establecer la altura del objeto a 100 unidades
            rt2.sizeDelta = new Vector2(rt2.sizeDelta.y, 25);
        }
        else
        {
            for (int i = 0; i < archivos.Count; i++)
            {
                GameObject objetoTexto = Instantiate(objetoTextoPrefab, transform);
                Text textoComponente = objetoTexto.GetComponent<Text>();
                textoComponente.text = Path.GetFileNameWithoutExtension(archivos[i]);
                // Obtener el componente RectTransform del objeto
                RectTransform rt = textoComponente.GetComponent<RectTransform>();
                // Establecer la altura del objeto a 100 unidades
                rt.sizeDelta = new Vector2(rt.sizeDelta.y, 25);
            }
        }

    }

    // Update is called once per frame
    void Update()
    {
        
    }
}

public class cargarDICOM2 : MonoBehaviour { private List<string> archivos = new List<string>(); public GameObject objetoTextoPrefab; public GameObject pantalla1; public GameObject pantalla0; public static string archivoDICOM; // Start is called before the first frame update void Start() { //conseguimos los archivos que hay en la ruta de la aplicacion, donde esta la imagen DICOM almacenada try { foreach (string file in System.IO.Directory.GetFiles(Application.persistentDataPath)) { archivos.Add(file); } } catch (Exception ex) { Debug.LogError("Error al leer archivos: " + ex.Message); } if (archivos.Count != 0) { for (int i = 0; i < archivos.Count; i++) { int index = i; // Aquí creamos una variable local que guarda el valor actual de i GameObject BOTON = Instantiate(objetoTextoPrefab, transform); RectTransform rt = BOTON.GetComponent<RectTransform>(); // Establecer la altura del objeto a 100 unidades rt.sizeDelta = new Vector2(rt.sizeDelta.y, 25); Button boton = BOTON.GetComponent<Button>(); boton.onClick.AddListener(() => { string path = ObtenerPath(index); Debug.Log("Path obtenido: " + path); archivoDICOM = path; // Aquí puedes hacer cualquier otra cosa con el path que se haya obtenido. pantalla1.SetActive(true); FindObjectOfType<cargarImagenes>().cargarIMG(); }); } } } string ObtenerPath(int indice) { string path = archivos[indice]; return path; } } la cuestion es que subo la aplicacion a las gafas y no pasa nada. no se cargan las pantallas ni nada y no encuentro el error.

Not Monitored
Not Monitored
Tag not monitored by Microsoft.
39,708 questions
0 comments No comments
{count} votes

1 answer

Sort by: Most helpful
  1. Zuocheng Wang - MSFT 3,091 Reputation points Microsoft Vendor
    2023-04-19T09:11:40.33+00:00

    Hello, Welcome to Microsoft Q&A,

    Please understand that currently only English support is available on the Q&A. Please repost a thread and describe your question in English.


    If the response is helpful, please click "Accept Answer" and upvote it.

    Note: Please follow the steps in our documentation to enable e-mail notifications if you want to receive the related email notification for this thread.

    0 comments No comments

Your answer

Answers can be marked as Accepted Answers by the question author, which helps users to know the answer solved the author's problem.