Unity 读写文件之PC端&Android端

考虑到版本之间或许并不通用,特此声明实验环境为:Unity 2018.2.17。

在使用unity进行游戏开发时,很多时候我们需要进行文件读写,这里我们来对PC端和Android端的不同实现方法进行一个梳理。

包括:

  • 读写文件的简单场景创建
  • PC端的读写方法
  • Android端的读写方法(一)
  • Android端的读写方法(二)

首先我们需要创建一个简单场景以供测试:

如图所示,在屏幕中央有一个“开始”按钮,点击之后就会在相应的目录下生成名为test.txt的文件,内容为“Hello World!”。
以下是这个场景的创建方法,熟练的同学可以直接跳过。

using System.Collections;using System.Collections.Generic;using UnityEngine;using System.IO;public class test : MonoBehaviour {private string path;// Use this for initializationvoid Start () {}// Update is called once per framevoid Update () {}// 开始按钮被点击时被调用的方法public void click(){WriteFileByLine(path, "test.txt", "Hello World!");}// 定义文件读写的函数void WriteFileByLine(string file_path, string file_name, string str_info){StreamWriter sw;if (!File.Exists(file_path + "//" + file_name)){sw = File.CreateText(file_path + "//" + file_name);Debug.Log("success");}else{sw = File.AppendText(file_path + "//" + file_name);}sw.WriteLine(str_info);sw.Close();sw.Dispose();}}

将此test.cs脚本挂在相机上,同时为“开始”按钮增加点击事件。

当按钮被点击时,调用相机上test.cs中的click()方法,click()方法意为在path路径下进行文件读写。

需要注意的是,Button所在画布Canvas的Render Mode选项,需要设置为Screen Space,可以避免手机屏幕适配出现问题。

一、PC端的文件读写
在Start()方法对path路径进行设置,一般常用的是Application.dataPath,返回的路径即为Assets。

void Start () {//返回程序的数据文件所在目录path = Application.dataPath;}

结果如下:

即使将程序导出为exe文件运行,也是一样的。

二、Android端的文件读写
由于Android端的测试涉及到unity导出apk的方法,在此只对参数设置进行说明,相关的环境配置请参考其他博客。
在Player Settings中,先填写公司名称和程序名称,选择一个程序的图标,这里可以随意。

关键是下面的Other Settings中的Package Name这一项,一定要记得更改为:

com.公司名.程序名


下面进行Android端文件读写的具体实现方法。

1、方法一:
同样在Start()方法对path路径进行设置,参考PC端的方法,但使用的目录是:
Application.persistentDataPath,返回的是安装程序时默认生成的文件目录。

void Start () {//返回程序安装时生成的默认目录path = Application.persistentDataPath;}

具体的目录是: /Android/data/com.Woody.Test
结果如下:

2、方法二
由于方法一的存储目录有些刁钻,查找起来也不大方便,故我们可以进行自定义的存储目录。
例如,在手机的SD卡上Documents文件夹下进行读写。

void Start () {//Android端自定义目录path = "/storage/emulated/0/Documents";}

在导出设置时,需要将Other Settings下的Write Permission改为External。

查看相应结果:



以上就是unity在PC端和Android端进行文件读写的简单原理说明,关键就在于定义正确的目录。

更多相关文章

  1. 详解Android接口Interface的使用和意义
  2. Android(安卓)IPC机制(三):浅谈Binder的使用
  3. android缓存数据到本地放在哪儿最好?
  4. Android:属性动画详解
  5. Android中级教程之(二)----->Android(安卓)SDK中tools详解
  6. Android(安卓)ndk开发swig编译jni接口配置文件(二)
  7. 学习到的有关android的知识点 单元测试等(1)
  8. Android(安卓)实现一个简单的文件上传工具
  9. Flex开发Android(安卓)更改ViewMenu外观

随机推荐

  1. Android 简单模仿AsyncHttpClient
  2. android 数据库操作
  3. android webView判断是否加载完成的2种办
  4. android 评分组件 RatingBar
  5. android之ArrayAdaper之Spinner
  6. 安卓应用开发基础:android Dev Guide的App
  7. Android AlertDialog背景透明
  8. Using cygwin with the Android NDK on W
  9. 在自己的项目中引入Material design设计
  10. Android中Serializable和Parcelable的用