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.