c# - tag - obtener la posicion de un objeto unity
Uso de la carpeta de recursos en Unity (1)
Estoy desarrollando un proyecto HoloLens que necesita hacer referencia a archivos .txt. Tengo los archivos almacenados en la carpeta ''Recursos'' de Unity y los tengo funcionando perfectamente bien (cuando se ejecutan a través de Unity):
string basePath = Application.dataPath;
string metadataPath = String.Format(@"/Resources/.../metadata.txt", list);
// If metadata exists, set title and introduction strings.
if (File.Exists(basePath + metadataPath))
{
using (StreamReader sr = new StreamReader(new FileStream(basePath + metadataPath, FileMode.Open)))
{
...
}
}
Sin embargo, al compilar el programa para la implementación de HoloLens, puedo ejecutar el código pero no funciona. Ninguno de los recursos aparece y cuando examino la solución HoloLens Visual Studio (creada al seleccionar construir en Unity), ni siquiera veo una carpeta de recursos o activos. Me pregunto si estoy haciendo algo mal o si había una forma especial de manejar esos recursos.
También con archivos de imagen y sonido ...
foreach (string str in im)
{
spriteList.Add(Resources.Load<Sprite>(str));
}
La cadena ''str'' es válida; Funciona absolutamente bien con Unity. Sin embargo, de nuevo, no se carga nada cuando se ejecuta a través de HoloLens.
No puede leer el directorio de Recursos con
StreamReader
o la clase
File
.
Debe usar
Resources.Load
.
1. La ruta es relativa a cualquier carpeta de Recursos dentro de la carpeta de Activos de su proyecto.
2. No incluya los nombres de extensión de archivo como .txt , .png , .mp3 en el parámetro de ruta.
3. Utilice barras diagonales en lugar de barras diagonales cuando tenga otra carpeta dentro de la carpeta Recursos . las barras invertidas no funcionarán.
Archivos de texto :
TextAsset txtAsset = (TextAsset)Resources.Load("textfile", typeof(TextAsset));
string tileFile = txtAsset.text;
Formatos de conjunto de texto admitidos:
txt .html .htm .xml .bytes .json .csv .yaml .fnt
Archivos de sonido :
AudioClip audio = Resources.Load("soundFile", typeof(AudioClip)) as AudioClip;
Archivos de imagen :
Texture2D texture = Resources.Load("textureFile", typeof(Texture2D)) as Texture2D;
Sprites - Single :
Imagen con el tipo de textura establecido en Sprite (2D y UI) y
Imagen con Modo Sprite configurado en Individual .
Sprite sprite = Resources.Load("spriteFile", typeof(Sprite)) as Sprite;
Sprites - Múltiples :
Imagen con el tipo de textura establecido en Sprite (2D y UI) y
Imagen con Modo Sprite establecido en Múltiple .
Sprite[] sprite = Resources.LoadAll<Sprite>("spriteFile") as Sprite[];
Archivos de video (Unidad> = 5.6) :
VideoClip video = Resources.Load("videoFile", typeof(VideoClip)) as VideoClip;
GameObject Prefab :
GameObject prefab = Resources.Load("shipPrefab", typeof(GameObject)) as GameObject;
Malla 3D (como archivos FBX)
Mesh model = Resources.Load("yourModelFileName", typeof(Mesh)) as Mesh;
Malla 3D (de GameObject Prefab)
MeshFilter modelFromGameObject = Resources.Load("yourGameObject", typeof(MeshFilter)) as MeshFilter;
Mesh loadedMesh = modelFromGameObject.sharedMesh; //Or design.mesh
Modelo 3D (como GameObject)
GameObject loadedObj = Resources.Load("yourGameObject") as GameObject;
//MeshFilter meshFilter = loadedObj.GetComponent<MeshFilter>();
//Mesh loadedMesh = meshFilter.sharedMesh;
GameObject object1 = Instantiate(loadedObj) as GameObject;
Acceso a archivos en una subcarpeta :
Por ejemplo, si tiene un archivo shoot.mp3 que se encuentra en una subcarpeta llamada " Sonido " que se coloca en la carpeta Recursos , utilice la barra diagonal:
AudioClip audio = Resources.Load("Sound/shoot", typeof(AudioClip)) as AudioClip;
Carga asincrónica :
IEnumerator loadFromResourcesFolder()
{
//Request data to be loaded
ResourceRequest loadAsync = Resources.LoadAsync("shipPrefab", typeof(GameObject));
//Wait till we are done loading
while (!loadAsync.isDone)
{
Debug.Log("Load Progress: " + loadAsync.progress);
yield return null;
}
//Get the loaded data
GameObject prefab = loadAsync.asset as GameObject;
}
Para usar
:
StartCoroutine(loadFromResourcesFolder());