关于Unity中文件读取存储:在程序发布后文件的存放有两种,第一种是打包到Uniyt的资源包中(*.unity3D),第二种就是把文件存放在一个特殊的目录如:StreamingAssets,这个目录的东西Unity不会打包任何资源包中(但让除非你手动打包),但是发布的时候这个文件夹会被打包进程序中,一起发布。 格式:存储:在程序发布后文件的存放有两种,第一种是打包到Uniyt的资源包中(*.unity3D),第二种就是把文件存放在一个特殊的目录如:StreamingAssets,这个目录的东西Unity不会打包任何资源包中(但让除非你手动打包),但是发布的时候这个文件夹会被打包进程序中,一起发布。 格式:通过WWW加载: 一种是纯文本格式,如 txt,xml,csv等,这种纯文本试用原始扩展名即可。 一种是二进制,如果文件需要压缩,加密等等操作,需要把文件的扩展名改为.bytes. 使用WWW加载时需要注意编码格式为 utf8,如果它不能解析为utf8字符串,文本导入器会尽量带nonascii字。 代码中修改xml编码格式: byte[] encodingData = Encoding.UTF8.GetBytes(m_strData); 通过C#加载: 任意格式. 读取:第一种: 这种方法也分两种,一种是放到Resources文件夹下当Untiy 发布的时候会把这个文件夹下的所有资源打包成一个默认资源包一起发布出去,读取时用Resources类读取. 另外一种是自己打包然后通过WWW加载AssetBundle,最后通过AssetBundle中的函数加载与Resources方法类似。 第二种: 这种方法需要把文件放到StreamingAssets目录下,在不同的平台上面 (Windows, Ios ,Android),该目录最终发布的位置不同,所以读取的方法也不同。
WWW是异步加载所以执行加载命令式不能直接执行读取解析操作,要等待WWW www = new WWW(filePath);yield return www; // while (!www.isDone) {}result = www.text;总结:Android之所以不支持C# IO流 方式读取StreamingAssets下的文件,是因为Android手机中 StreamingAssets下的文件 如果想用C# IO流方式读取,参考: StreamingAssets 官方介绍: |
|