zoukankan      html  css  js  c++  java
  • 资源路径问题

    unity作为通用平台,资源读取在各个平台有差异,尤其是移动端和PC端。untiy不同的资源与不同的路径对应,一下依次分析:

    1)Application.dataPath

         对应于Assets文件最在的目录,在pc端即为工程目录下的Assets路径,如(unity工程名称为Empt,存放在d盘test目录下):D:/test/Empty/Assets。移动端则为apk路径,路径所示可看最后附图的第一条。

    2)Application.streamingAssetsPath

           此路径对应于StreamingAssets目录,StreamingAssets目录为unity保留路径,即手动建立的StreamingAssets目录unity也会特殊处理。在移动端,此目录下资源文件会包打包处理,外部无法手动打开访问。pc端可以通过C#的File等类进行读取,但是在移动端只能通过www类来加载。在移动端无法用File类来读取,而且File.Exists(Path.Combine(Application.streamingAssetsPath, "******"));始终返回false,所以只能通过www来加载。

          此路径与Application.dataPath有如下关系"jar:file://" + Application.dataPath + "!/assets/";

          在此说一下Resources目录,Resources也是unity保留路径,不过Resources里面资源unity会进行相关处理(如去掉没有应用的,以及压缩等文件等),而StreamingAssets下的文件则不会进行处理。获取Resources下的文件时通过Resources.Load()方法来加载,如通过string str = Resources.Load("hello").ToString()来获取hello.txt下的文本;通过Texture2D t =(Texture2D) Resources.Load(Path.GetFileNameWithoutExtension(imageName))获取imageName图片。如果Resources下有子目录可以采用相对路径(Texture2D)Resources.Load("BB/aa");即获取Resources下BB目录下的aa资源。Resources.Load获取资源时,资源名称不用带后缀。

    3)Application.temporaryCachePath

         此路径为一个临时路径目录,在移动端只能通过www类获取,不能用C#File类来读取。

    4)Application.persistentDataPath

         此路径是一个unity开放的文件路径,此路径下的文件可以随意更改删除,在移动端存放在可公开的SDCard上,具体路径可看附图中的第二条。此路径下的资源既可以通过www类来读取,也可以通过File类来读取。通过www读取时需要在路径开头添加 "file://"来实现协议,也可以采用C# system下的uri类(如new System.Uri(“路径”).AbsoluteUri),如WWW w = new WWW(new System.Uri(“路径”).AbsoluteUri);

    PS:相关资料显示ios系统移动端均可采用file类来读取文件(未测试);

    附图:

  • 相关阅读:
    3、MHC主要组织相容性复合体
    2、抗原
    1、免疫细胞
    【转】python3 内循环中遍历map,遍历一遍后再次进入内循环,map为空
    【转】Map 与 Unordered_map
    Chapter7 抑癌基因
    总结 搜索和最短路径问题
    1131 Subway Map DFS解法 BFS回溯!
    python 报错信息汇总
    python str转换成timedelta或date
  • 原文地址:https://www.cnblogs.com/llstart-new0201/p/8797348.html
Copyright © 2011-2022 走看看