unity3d游戏开发之读取写入.doc_第1页
unity3d游戏开发之读取写入.doc_第2页
unity3d游戏开发之读取写入.doc_第3页
unity3d游戏开发之读取写入.doc_第4页
unity3d游戏开发之读取写入.doc_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

前几天有个朋友问我为什么在IOS平台中可以正常的读写文件可是在android平台中就无法正常的读写。当时因为在上班所以我没时间来帮他解决,晚上回家后我就拿起安卓手机真机调试很快就定位问题所在,原来是他文件的路径写错了。开发中往往一道很难的问题解开的时候发现原来真的非常的简单,哇咔咔。刚好在MOMO的书中也有涉及到文件的读取与写入,那么本节我将书中的部分内容搬到博客中为大家讲解一下。废话我就不多说了咱直奔主题,创建Text.cs脚本,直接挂在摄像机中。代码中包括:创建文件、读取文件、删除文件。 Text.cs1. using UnityEngine;2. using System.Collections;3. using System.IO;4. using System.Collections.Generic;5. using System;6. 7. public class Text : MonoBehaviour 8. /文本中每行的内容9. ArrayList infoall;10. /皮肤资源,这里用于显示中文11. public GUISkin skin;12. void Start ()13. 14. 15. /删除文件16. DeleteFile(Application.persistentDataPath,FileName.txt);17. 18. /创建文件,共写入3次数据19. CreateFile(Application.persistentDataPath,FileName.txt,宣雨松MOMO);20. CreateFile(Application.persistentDataPath,FileName.txt,宣雨松MOMO);21. CreateFile(Application.persistentDataPath ,FileName.txt,宣雨松MOMO);22. /得到文本中每一行的内容23. infoall = LoadFile(Application.persistentDataPath,FileName.txt);24. 25. 26. 27. /*28. * path:文件创建目录29. * name:文件的名称30. *info:写入的内容31. */32. void CreateFile(string path,string name,string info)33. 34. /文件流信息35. StreamWriter sw;36. FileInfo t = new FileInfo(path+/+ name);37. if(!t.Exists)38. 39. /如果此文件不存在则创建40. sw = t.CreateText();41. 42. else43. 44. /如果此文件存在则打开45. sw = t.AppendText();46. 47. /以行的形式写入信息48. sw.WriteLine(info);49. /关闭流50. sw.Close();51. /销毁流52. sw.Dispose();53. 54. 55. /*56. * path:读取文件的路径57. * name:读取文件的名称58. */59. ArrayList LoadFile(string path,string name)60. 61. /使用流的形式读取62. StreamReader sr =null;63. try64. sr = File.OpenText(path+/+ name);65. catch(Exception e)66. 67. /路径与名称未找到文件则直接返回空68. return null;69. 70. string line;71. ArrayList arrlist = new ArrayList();72. while (line = sr.ReadLine() != null)73. 74. /一行一行的读取75. /将每一行的内容存入数组链表容器中76. arrlist.Add(line);77. 78. /关闭流79. sr.Close();80. /销毁流81. sr.Dispose();82. /将数组链表容器返回83. return arrlist;84. 85. 86. /*87. * path:删除文件的路径88. * name:删除文件的名称89. */90. 91. void DeleteFile(string path,string name)92. 93. File.Delete(path+/+ name);94. 95. 96. 97. void OnGUI()98. 99. /用新的皮肤资源,显示中文100. GUI.skin = skin;101. /读取文件中的所有内容102. foreach(string str in infoall)103. 104. /绘制在屏幕当中,哇咔咔!105. GUILayout.Label(str);106. 107. 108. 109. 110. 复制代码 代码中头文件需要注意一下,涉及到IO读取文件。创建文件、删除文件、读取文件的方法我也已经封装好,Start方法中为了避免上次保存文件的残留首先删除原来的文件,然后创建文件FileName.txt ,我们也可修改文件的类型的后缀名。这里我写的是.txt ,为了完整的让中文出现在IOS与Android中所以这里给文件中写的数据是”宣雨松MOMO”,最后在OnGUI中将读取文件的文本信息显示在屏幕中,脚本保存格式为UTF-16。 代码中我们保存文件的路径是Application.persistentDataPath。 如果你写的路径是 Application.dataPath在编辑器中是可以正常读取,但是在IOS与Android中是无法读取的,昨天问我的那个朋友就是因为这里路径写的有问题没能成功的写入文件。 Application.persistentDataPath路径就是将文件保存在手机的沙盒中,如果在编辑器中运行本程序文件将保存在Finder- 资源库-Caches-你的工程-保存的文件 。本例的路径就是 Finder-资源库- Caches - txt-FileName.txt。 OK 截至到这里,运行游戏后在编辑器中是可以正常的看到“宣雨松MOMO”出现在Game视图中,但是如果你编译在IOS或者Android上将只显示”MOMO”,原因很简单”宣雨松”三个字无法在Unity默认字体中找到,所以无法显示。而默认字体只有字母和数字、字符。我们为了在移动平台中正常的显示中文,需要自制中文字体包。下面我们开始制作一个简单的字体包,mac机的话大家可以在 资源库 - fonts中 找一个.ttf的字体,或者在网络中下载一个.ttf字体。MOMO比较喜欢微软雅黑字体,大家如果也喜欢微软雅黑可以在后面下载这个工程的源码,嘿嘿。如下图所示, Project视图中的”yh”就是MOMO在网络中下载的微软雅黑字体。FontSize:字体的大小,这里我设置呈50,为了让大家在IPAD中能看的更清楚。FontColor:字体颜色。Character:这里选择Custom set,因为这里需要配置我们需要的字体。CustomChars:这里输入需要制作的字体。Unity默认的字体包含数字符号字母,为了让移动设备支持中文,这里我输入”宣雨松”它将生成一个包含“宣雨松”的材质与贴图,也就是说将我们需要在移动设备中显示的任何字符串在这里配置一下就OK啦。最后点击又小角的Apply按钮即可完成字体配置。 这篇文章来自狗刨学习网 将字符赋值给创建的皮肤文件然后应用在程序当中即可,如下图所示这是IPAD中截图的效果,大家应该会问上面代码中明明写入的是”宣雨松MOMO”为什么这里没能显示MOMO呢?蛤蛤 原因很简单,上图中在Custom Chars中我们只配置了 “宣雨松” 所以这里就只能显示”宣雨松”无法显示MOMO啦。大家可根据自己需要显示的字符串添加进去即可。在程序中我们可能会写入很多的中文,但是同样的文字又没必要重复出现,那么如何来制作这个字体包呢?制作的细节大家可以参照威哥的博客:http:/1/article.asp?id=607他已经写得很清楚啦。 最后本文的程序MOMO已经打成包,雨松MOMO希望和大家一起学习,一起进步加油哇咔咔,拉拉 下载地址:/s/ab_aA 补充:假设你的程序中已经预先将2进制文件做好,如下图所示,你需要把二进制文件放在StreamingAssets这个文件夹中,一定要放在这里。 举个例子,放在StreamingAssets中二进制文件打包后,Unity会将这些二进制文件放置在对应平台下的路径下。所以根据不同平台,访问的路径是不一样的。切记,你的二进制文件一定要放在StreamingAssets !1. #if UNITY_EDITOR2. string filepath = Application.dataPath +/StreamingAssets+

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论