Использование папки ресурсов в Unity
Я разрабатываю проект HoloLens, который должен ссылаться .txt-файл. У меня есть файлы, хранящиеся в папке "ресурсы" Unity, и они работают отлично (при запуске через 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)))
{
...
}
}
однако при создании программы для развертывания HoloLens я могу запустить код, но он не работает. Ни один из ресурсов не отображается, и при рассмотрении решения HoloLens Visual Studio( созданного путем выбора сборки в Unity) я даже не вижу ресурсов или активов папка. Мне интересно, делаю ли я что-то неправильно или есть специальный способ справиться с такими ресурсами.
также с изображениями и звуковыми файлами...
foreach (string str in im)
{
spriteList.Add(Resources.Load<Sprite>(str));
}
строка' str ' действительна; она отлично работает с Unity. Однако, опять же, он ничего не загружает при запуске через HoloLens.
1 ответов
вы не можете прочитать каталог ресурсов с помощью StreamReader
или File
класса. Вы должны использовать Resources.Load
.
1.Путь относится к любой папке Resources внутри папки Assets вашего проекта.
2.Do не включите имена расширений файлов, такие как .txt, .формат PNG, .mp3 в параметре path.
3.Используйте прямые косые черты вместо обратных, когда у вас есть другая папка внутри ресурсы. обратные косые черты не сработают.
текстовые файлы:
TextAsset txtAsset = (TextAsset)Resources.Load("textfile", typeof(TextAsset));
string tileFile = txtAsset.text;
поддерживает TextAsset формат:
txt .HTML-код .НТМ .в XML .байты .в JSON .csv .и YAML .fnt
звуковые файлы:
AudioClip audio = Resources.Load("soundFile", typeof(AudioClip)) as AudioClip;
файлы изображений:
Texture2D texture = Resources.Load("textureFile", typeof(Texture2D)) as Texture2D;
Спрайты - Один:
изображение Тип Текстуры значение Sprite (2D и UI) и
изображение Спрайт Режим значение один.
Sprite sprite = Resources.Load("spriteFile", typeof(Sprite)) as Sprite;
спрайты - Несколько:
изображение Тип Текстуры значение Sprite (2D и UI) и
изображение Спрайт Режим значение несколько.
Sprite[] sprite = Resources.LoadAll<Sprite>("spriteFile") as Sprite[];
видеофайлы (Unity > = 5.6):
VideoClip video = Resources.Load("videoFile", typeof(VideoClip)) as VideoClip;
GameObject Prefab:
GameObject prefab = Resources.Load("shipPrefab", typeof(GameObject)) as GameObject;
3D Mesh (например, файлы FBX)
Mesh model = Resources.Load("yourModelFileName", typeof(Mesh)) as Mesh;
3D-сетки (с GameObject Prefab)
MeshFilter modelFromGameObject = Resources.Load("yourGameObject", typeof(MeshFilter)) as MeshFilter;
Mesh loadedMesh = modelFromGameObject.sharedMesh; //Or design.mesh
3D модель (как GameObject)
GameObject loadedObj = Resources.Load("yourGameObject") as GameObject;
//MeshFilter meshFilter = loadedObj.GetComponent<MeshFilter>();
//Mesh loadedMesh = meshFilter.sharedMesh;
GameObject object1 = Instantiate(loadedObj) as GameObject;
доступ к файлам в папке:
например, если у вас есть стрелять.mp3 файл, который находится в подпапке под названием"звук", который расположен в ресурсы папка, вы используете косую черту:
AudioClip audio = Resources.Load("Sound/shoot", typeof(AudioClip)) as AudioClip;
асинхронный Загрузка:
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;
}
использовать: StartCoroutine(loadFromResourcesFolder());