我正在开发一个需要引用.txt文件的HoloLens项目 . 我将这些文件存储在Unity的“Resources”文件夹中,并让它们完美地运行(通过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目录 . 你必须使用Resources.Load .1 . 该路径相对于项目的Assets文件夹中的任何Resources文件夹 .
2 .Do not 在路径参数中包含文件扩展名,例如.txt,.png,.mp3 .
3 . 当Resources文件夹中有另一个文件夹时,使用正斜杠而不是反斜杠 . 反斜杠不起作用 .
Text files :
支持的TextAsset格式:
txt .html .htm .xml .bytes .json .csv .yaml .fnt
Sound files :
Image files :
Sprites - Single :
纹理类型的图像设置为Sprite(2D和UI)和
Sprite Mode设置为Single的图像 .
Sprites - Multiple :
纹理类型的图像设置为Sprite(2D和UI)和
Sprite Mode设置为Multiple的图像 .
Video files (Unity >= 5.6) :
GameObject Prefab :
3D Mesh (such as FBX files)
3D Mesh (from GameObject Prefab)
3D Model (as GameObject)
Accessing files in a sub-folder :
例如,如果您有一个名为“Sound”的子文件夹中的shoot.mp3文件放在Resources文件夹中,则使用正斜杠:
Asynchronous Loading :
使用:
StartCoroutine(loadFromResourcesFolder());