在Unity中使用资源文件夹

我正在开发一个需要引用.txt文件的HoloLens项目。 我有存储在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运行时不会加载任何东西。

您无法使用StreamReaderFile类读取Resources目录。 您必须使用Resources.Load

1。路径是相对于您的项目的资产文件夹内的任何资源文件夹。

2 ,路径参数中不要包含.txt.png.mp3等文件扩展名。

3.Resources文件夹中有另一个文件夹时,使用正斜杠而不是反斜杠。 反斜杠将不起作用。

文本文件

 TextAsset txtAsset = (TextAsset)Resources.Load("textfile", typeof(TextAsset)); string tileFile = txtAsset.text; 

支持TextAsset格式:

txt .html .htm .xml .bytes .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模式设置为Single的图像

 Sprite sprite = Resources.Load("spriteFile", typeof(Sprite)) as Sprite; 

精灵 – 多重

纹理类型设置为Sprite(2D和UI)

Sprite模式设置为Multiple的图像

 Sprite[] sprite = Resources.LoadAll<Sprite>("spriteFile") as Sprite[]; 

视频文件(Unity> = 5.6)

 VideoClip video = Resources.Load("videoFile", typeof(VideoClip)) as VideoClip; 

游戏对象预制

 GameObject prefab = Resources.Load("shipPrefab", typeof(GameObject)) as GameObject; 

3D网格(如FBX文件)

 Mesh model = Resources.Load("yourModelFileName", typeof(Mesh)) as Mesh; 

3D网格(来自GameObject预制)

 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; 

访问子文件夹中的文件

例如,如果在位于Resources文件夹中的名为“ Sound ”的子文件夹中有一个shoot.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());