why*_*ard 12 c# resources assets unity-game-engine hololens
我正在开发一个需要引用.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)))
{
...
}
}
Run Code Online (Sandbox Code Playgroud)
但是,在为HoloLens部署构建程序时,我能够运行代码,但它不起作用.没有任何资源出现,当检查HoloLens Visual Studio解决方案(通过在Unity中选择构建创建)时,我甚至没有看到资源或资源文件夹.我想知道我做错了什么,或者是否有一种特殊的方式来处理这些资源.
还有图像和声音文件......
foreach (string str in im)
{
spriteList.Add(Resources.Load<Sprite>(str));
}
Run Code Online (Sandbox Code Playgroud)
字符串'str'有效; 它与Unity完全一致.然而,再次,它在通过HoloLens运行时没有加载任何东西.
Pro*_*mer 26
您无法使用StreamReader或File类读取Resources目录.你必须使用Resources.Load.
1.该路径相对于项目的Assets文件夹中的任何Resources文件夹.
2.做不包括文件扩展名,如.TXT,.PNG,MP3播放路径参数.
3.当您在Resources文件夹中有另一个文件夹时,使用正斜杠而不是反斜杠.反斜杠不起作用.
文字文件:
TextAsset txtAsset = (TextAsset)Resources.Load("textfile", typeof(TextAsset));
string tileFile = txtAsset.text;
Run Code Online (Sandbox Code Playgroud)
支持的TextAsset格式:
TXT 的.html 的.htm 的.xml .bytes 以.json 的.csv .yaml .FNT
声音文件:
AudioClip audio = Resources.Load("soundFile", typeof(AudioClip)) as AudioClip;
Run Code Online (Sandbox Code Playgroud)
图像文件:
Texture2D texture = Resources.Load("textureFile", typeof(Texture2D)) as Texture2D;
Run Code Online (Sandbox Code Playgroud)
精灵 - 单身:
纹理类型的图像设置为Sprite(2D和UI)和
与图像雪碧模式设置为单.
Sprite sprite = Resources.Load("spriteFile", typeof(Sprite)) as Sprite;
Run Code Online (Sandbox Code Playgroud)
精灵 - 多个:
纹理类型的图像设置为Sprite(2D和UI)和
与图像雪碧模式设置为多.
Sprite[] sprite = Resources.LoadAll<Sprite>("spriteFile") as Sprite[];
Run Code Online (Sandbox Code Playgroud)
视频文件(Unity> = 5.6):
VideoClip video = Resources.Load("videoFile", typeof(VideoClip)) as VideoClip;
Run Code Online (Sandbox Code Playgroud)
GameObject Prefab:
GameObject prefab = Resources.Load("shipPrefab", typeof(GameObject)) as GameObject;
Run Code Online (Sandbox Code Playgroud)
3D网格(例如FBX文件)
Mesh model = Resources.Load("yourModelFileName", typeof(Mesh)) as Mesh;
Run Code Online (Sandbox Code Playgroud)
3D网格(来自GameObject Prefab)
MeshFilter modelFromGameObject = Resources.Load("yourGameObject", typeof(MeshFilter)) as MeshFilter;
Mesh loadedMesh = modelFromGameObject.sharedMesh; //Or design.mesh
Run Code Online (Sandbox Code Playgroud)
3D模型(作为GameObject)
GameObject loadedObj = Resources.Load("yourGameObject") as GameObject;
//MeshFilter meshFilter = loadedObj.GetComponent<MeshFilter>();
//Mesh loadedMesh = meshFilter.sharedMesh;
GameObject object1 = Instantiate(loadedObj) as GameObject;
Run Code Online (Sandbox Code Playgroud)
访问子文件夹中的文件:
例如,如果您有一个名为" Sound " 的子文件夹中的shoot.mp3文件放在Resources文件夹中,则使用正斜杠:
AudioClip audio = Resources.Load("Sound/shoot", typeof(AudioClip)) as AudioClip;
Run Code Online (Sandbox Code Playgroud)
异步加载:
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;
}
Run Code Online (Sandbox Code Playgroud)
使用:StartCoroutine(loadFromResourcesFolder());