zoukankan      html  css  js  c++  java
  • Unity3d各平台资源路径文件夹

    之前一直是PC项目,公司终于考虑移动平台了,但是试验了几把,感觉移动平台资源管理路径还是有很多隐藏的注意事项。

    比如在PC上可以做到随便读写,但是在移动平台就涉及到权限问题。

    看到小伙伴的总结,还是要记录一下,好记性不如烂笔头啊,主题如下:

    1.Unity的资源数据加载
    2.Resource、StreamingAsset文件夹,安装后的路径(Android,iOS)
    3.Unity在打包和安装的时候怎么处理persistentDataPath
    4.Unity的Android和IOS上相关的目录结构
    5.Unity常用目录对应的Android && iOS平台地址

    下面开始细说具体的注意事项>>>>>>>>>>>>

    1.Unity的资源数据加载 - Resources、AssetBundle、StreamingAsset、PersistentDataPath
    Resources目录
    - 打包集成到.asset文件里面及引用的资源as后se一个文件里面面
    - 主线程加载
    - 想要动态更新资源则不考虑
    AssetBundle
    - unity定义的二进制文件类型
    - 用WWW类下载


    StreamingAssets目录
    - 可读不可写
    - 内容限制 - 无
    - 只能用WWW类下载


    PersistentDataPath目录
    - 可读可写
    - 内容限制 - 无
    - 清除手机缓存文件会一并清理这里的东西
    - 随意弄,可作为本地目录让WWW下载、也可以自己用FileInfo 或者FileStream读写;

        private void WriteCfg(string content)
        {
            string targetPath = Application.persistentDataPath + "/cfg.txt";
            StreamWriter sw;
            FileInfo t = new FileInfo(targetPath);
            if (!t.Exists)
            {
                //如果此文件不存在则创建  
                sw = t.CreateText();
            }
            else
            {
                //如果此文件存在则打开  
                sw = t.AppendText();
            }
            //以行的形式写入信息  
            sw.WriteLine(content);
            sw.Close();
            sw.Dispose(); 
        }
                    FileStream fs = new FileStream(targetPath, FileMode.Create, FileAccess.ReadWrite);
                    fs.Write(www.bytes, 0, www.bytes.Length);
                    fs.Flush();
                    fs.Close();



    2.Resource、StreamingAsset文件夹,安装后的路径(Android,iOS)

    StreamingAsset

    -PC:Application.dataPath + "/StreamingAssets";
    - iOS : Application.dataPath + “/Raw”;
    - Android : jar:file:// + Application.dataPath + !/assets/
    Unity目前在Android平台也直接提供jar:file的格式,无需自己添加,直接使用:

    只能通过www读取,因为该文件夹在jar包内部,协议是jar:file:// ,Application.streamingAssetsPath返回的路径会自动添加该协议。

    public string filePath = System.IO.Path.Combine(Application.streamingAssetsPath, "MyFile");
        public string result = "";
        IEnumerator Example() {
            if (filePath.Contains("://")) {
                WWW www = new WWW(filePath);
                yield return www;
                result = www.text;
            } else
                result = System.IO.File.ReadAllText(filePath);
        }



    Resources
    - 打包成一个Asset文件

    3.Unity在打包和安装的时候怎么处理PersistentDataPath
    - PersistentDataPath- 就是com.**.**/files 的路径而已
    比如Android发布导出设置 write acess选择SD Card,否则就失去了读写的意义,www读取,stream读写。

    注意,WWW加载时 Application.persistentDataPath返回的路径不会自动添加协议,需要手动添加,协议是file://而不是jar:// 因为导出包是外面的SD卡。

    该目录会在SD卡中暴露出来,无需root权限,属于本地文件,可以直接在手机文件管理中看到,因此也需要本地文件协议file://读取,日志可以写于此处。


    4.Unity的Android和IOS上相关的目录结构
    Android:
    - assets 游戏内容相关的都在这里了
    - lib JNI相关的东西
    - META-INF Java包跟rar包的区别
    - res 图标之类的
    - AndroidManifest.xml Android配置文件
    - classes.dex Java虚拟机runtime的东西
    - resources.arsc Java编译后的二进制文件

    IOS:
    - level0/level1… Scene
    - sharedassets0/shaedassets1/… Scene相关的东西
    - Managed 脚本编译后的dll
    - resources.assets Resources里面的东西
    - Raw StreamingAssets里面的东西

    5. Unity常用目录对应的Android && iOS平台地址
    IOS:
    Application.dataPath : Application/xxxxx/xxx.app/Data
    Application.streamingAssetsPath : Application/xxxxx/xxx.app/Data/Raw
    Application.persistentDataPath : Application/xxxxx/Documents
    Application.temporaryCachePath : Application/xxxxx/Library/Caches

    Android:
    Application.dataPath : /data/app/xxx.xxx.xxx.apk
    Application.streamingAssetsPath : jar:file:///data/app/xxx.xxx.xxx.apk/!/assets
    Application.persistentDataPath : /data/data/xxx.xxx.xxx/files
    Application.temporaryCachePath : /data/data/xxx.xxx.xxx/cache

    转自Unity3D吧,以上内容仅做参考,最新使用规范参见官方地址:

    http://docs.unity3d.com/ScriptReference/Application-dataPath.html

  • 相关阅读:
    CentOS7 将Tomcat放在Supervisor自启动
    CentOS7 配置Supervisor开机启动
    CentOS7 系统时间与实际时间相差8个小时
    Windows下配置mysql的密码强度策略
    mysql升级mysql5.7.22记录
    org.codehaus.plexus.archiver.jar.Manifest.write(java.io.PrintWriter)
    jdk自带工具生成 ssl证书
    Java 对List中每个对象元素按时间顺序排序
    IntelliJ IDEA 导入的项目找不到import javax.servlet...相关包
    IntelliJ IDEA 2017 集成 svn
  • 原文地址:https://www.cnblogs.com/2Yous/p/5001527.html
Copyright © 2011-2022 走看看