c# – 在Unity中使用资源文件夹

栏目: 后端 · 发布时间: 5年前

内容简介:翻译自:https://stackoverflow.com/questions/41326248/using-resources-folder-in-unity

我正在开发一个需要引用.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运行时没有加载任何东西.

您无法使用StreamReader或File类读取Resources目录.你必须使用 Resources.Load

.

1.该路径相对于项目的Assets文件夹中的任何Resources文件夹.

2.不要在path参数中包含.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 Mode设置为Single的图像.

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

精灵 – 多个:

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

Sprite Mode设置为Multiple的图像.

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网格(例如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;

访问子文件夹中的文件:

例如,如果您有一个名为“Sound”的子文件夹中的shoot.mp3文件放在Resources文件夹中,则使用正斜杠:

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());

翻译自:https://stackoverflow.com/questions/41326248/using-resources-folder-in-unity


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

阿里传

阿里传

波特·埃里斯曼 / 张光磊、吕靖纬、崔玉开 / 中信出版社 / 2015-9-15 / CNY 49.00

你只知道阿里巴巴故事的中国部分,而这本书会完整呈现故事的全部。 波特•埃里斯曼是阿里巴巴创业时期为数不多的外国高管。他于2000~2008年在阿里巴巴担任副总裁,这本书记录了他在阿里巴巴8年的时间里的创业故事、商业经验以及在阿里巴巴和马云、蔡崇信、关明生等阿里巴巴早期团队并肩奋战的故事。 在波特眼中,阿里巴巴的成功经验和模式是可以复制的,阿里巴巴曾经犯过的错误,走过的弯路,我们也可以绕......一起来看看 《阿里传》 这本书的介绍吧!

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试