Использование папки ресурсов в 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());