Unity Android上配置文件的解决方法 一个由换行符引起的错误

来源:互联网 发布:js url base64编码 编辑:程序博客网 时间:2024/06/01 10:08

版本:unity 5.3.4  语言:C#

 

本人这边参考了木头大的文章,不过因为我的需求是能直接用Android的文件编辑器直接改配置文件,而且是在非root的权限的前提下(因为麻烦嘛)。

 

所以我提出了在sdcard上保存配置文件的方法。当然如果你不是VR游戏的话,直接在游戏内弄个设置界面就OK了。

 

首先是一个宏,用来判断当前环境是编辑模式下、还是在Android环境下:

public static string CONFIG_PATH#if UNITY_EDITOR        = Application.persistentDataPath + "/app.conf";#elif UNITY_ANDROID        = "/sdcard/app.conf";#endif

需要注意的是,如果你把Unity设置为Android项目,即使是在编辑器环境下,返回的也是真,所以在判断前一定要先判断UNITY_EDITR的真假。

 

用到了sdcard,项目必须想系统申请该权限,把配置的Write Access改为如下图(想要吐槽的是Android的权限系统形同虚设):



我们操控文件使用的类是FileStream,读取文件的话如下代码所示:

// 获取内容FileStream fileStream = new FileStream(CONFIG_PATH + "/" + configName, FileMode.Open);byte[] bytes = new byte[2048];fileStream.Read(bytes, 0, bytes.Length);// 读取内容string context = Encoding.ASCII.GetString(bytes);fileStream.Close();


接下来是保存字符串的代码:

FileStream fileStream = new FileStream(CONFIG_PATH + "/" + configName, FileMode.Create);// 构造内容string content = "xxxxxxxx";Console.WriteLine("{0}", content);ASCIIEncoding ascii = new ASCIIEncoding();byte[] bytes = ascii.GetBytes(content);// 保存fileStream.Write(bytes, 0, bytes.Length);fileStream.Close();

 

还是比较容易的吧,不过我在Android打包后出现了一些问题。先讲一下换行符,在Windows平台上换行符是由两个字符表示的\r\n,而在Android上使用则是\n。

 

我这边在Android上编辑的时候,遇到了每一个项配置后面有个空格的情况,当时没有太注意,后来一想那玩意就是\r。而我把它删除了,使用\r\n来分割每一个配置项自然就出错了。

 

总结:

Windows换行符:\r\n;Android:\r\n

1 0
原创粉丝点击