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
- Unity Android上配置文件的解决方法 一个由换行符引起的错误
- 由Numeric引起的错误解决方法
- 由myeclipse验证引起的错误解决方法
- 由“回车换行”引起的“空格”
- 一个换行符引起的死亡场景
- 一个由proxool配置文件的sql语句配置引起的问题
- 由字符集编码引起的错误
- 由编译警告引起的程序错误
- 由DRM引起的ORA-00481错误
- IIS应用程序池由服务器引起常见错误号的原因分析及解决方法
- 一个由模板函数引起的问题
- 一个由sscanf函数引起的bug
- 一个由__GNUC__引起的编译问题
- Android编译CPU架构体系不同引起的错误解决方法
- 一个由WebBrowser引起的“未将对象引用设置到对象的实例。”错误
- 一个内存错误的引起
- 一个通配符引起的错误
- 一个标点符号引起的错误
- 备忘spring下载地址
- Yii2-高级应用程序模板在同一域名下使用配置
- 前方危险-让很多“高逼格”高管深刻反思的文章
- JS设计模式
- leetCode练习(93)
- Unity Android上配置文件的解决方法 一个由换行符引起的错误
- 微信公众帐号demo程序坑爹的3个BUG
- 伯凡时间-1610
- Centos7下使用Squid快速搭建带认证的HTTP代理服务器
- [linux]terminal
- 字符串空格替换
- 第8周OJ项目5 打印数字图形
- Qt/C++ 跑马灯效果~
- VS2010中C#实现远程调试功能(转)