存储:

在程序发布后文件的存放有两种,第一种是打包到Uniyt的资源包中(*.unity3D),第二种就是把文件存放在一个特殊的目录如:StreamingAssets,这个目录的东西Unity不会打包任何资源包中(但让除非你手动打包),但是发布的时候这个文件夹会被打包进程序中,一起发布。

格式:

通过WWW加载:

一种是纯文本格式,如 txt,xml,csv等,这种纯文本试用原始扩展名即可。

一种是二进制,如果文件需要压缩,加密等等操作,需要把文件的扩展名改为.bytes.

使用WWW加载时需要注意编码格式为 utf8,如果它不能解析为utf8字符串,文本导入器会尽量带nonascii字。

代码中修改xml编码格式:

byte[] encodingData = Encoding.UTF8.GetBytes(m_strData);
      System.IO.MemoryStream ms = new System.IO.MemoryStream(encodingData);
      ms.Flush();
      ms.Position = 0;
      document.Load(ms)

通过C#加载:

任意格式.

读取:

第一种:

这种方法也分两种,一种是放到Resources文件夹下当Untiy 发布的时候会把这个文件夹下的所有资源打包成一个默认资源包一起发布出去,读取时用Resources类读取.

另外一种是自己打包然后通过WWW加载AssetBundle,最后通过AssetBundle中的函数加载与Resources方法类似。

第二种:

这种方法需要把文件放到StreamingAssets目录下,在不同的平台上面 (Windows, Ios ,Android),该目录最终发布的位置不同,所以读取的方法也不同。

windows

IOS

Android

C#

支持

支持

不支持

C#路径

Application.streamingAssetsPath
 + "/Myfile.txt"

Application.streamingAssetsPath
 + "/Myfile.txt"

WWW

支持

支持

支持

WWW路径

"file://"
 + Application.streamingAssetsPath
 + "/Myfile.txt"

"file://"
 + Application.streamingAssetsPath
 + "/Myfile.txt"

Application.streamingAssetsPath
 + "/Myfile.txt"

WWW是异步加载所以执行加载命令式不能直接执行读取解析操作,

要等待

WWW www = new WWW(filePath);

yield return www; // while (!www.isDone) {}

result = www.text;

本文来自:http://www.cnblogs.com/ThreeThousandBigWorld/archive/2013/07/18/3199245.html

总结:Android之所以不支持C# IO流方式读取StreamingAssets下的文件,是因为Android手机中

StreamingAssets下的文件

都包含在压缩的.jar文件中(这基本上与标准的zip压缩文件的格式相同)。这意味着,如果你不使用Unity中的WWW类去检索文件,那么你需要使用额外的软件去查看.jar的存档并获取该文件。

如果想用C# IO流方式读取,参考:

http://www.cnblogs.com/solq/archive/2012/05/21/2511522.html

StreamingAssets 官方介绍:

http://game.ceeger.com/Manual/StreamingAssets.html

http://docs.unity3d.com/Documentation/Manual/StreamingAssets.html

Unity 文件读取的更多相关文章

  1. 【Unity_UWP】Unity 工程发布win10 UWP 时的本地文件读取 (下篇)

    Universal Windows Platform(UWP)是微软Windows10专用的通用应用平台,其目的在于在统一操作系统下控制所有智能电子设备. 自从Unity 5.2之后,配合VS 201 ...

  2. 【Unity_UWP】Unity 工程发布win10 UWP 时的本地文件读取 (上篇)

    Universal Windows Platform(UWP)是微软Windows10专用的通用应用平台,其目的在于在统一操作系统下控制所有智能电子设备. 自从Unity 5.2之后,配合VS 201 ...

  3. unity文件 PlayerPrefs.SetInt 保存 And PlayerPrefs.GetInt读取

    unity文件保存读取PlayerPrefs.SetInt   And  PlayerPrefs.GetInt using UnityEngine; using System.Collections; ...

  4. java中的文件读取和文件写出:如何从一个文件中获取内容以及如何向一个文件中写入内容

    import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.Fi ...

  5. php xml 文件读取 XMLReader

    php xml 文件读取 <?php /** $xmlString = '<xml> <persons count="10"> <person ...

  6. 1-2 nodejs小节 文件读取

    1.表达式 在命令行输入  node回车后,可以在后边输入相应的表达式,进行运算操作   2.阻塞文件读取 var data=fs.readFileSync('input.txt', 'utf-8') ...

  7. 详解Js中文件读取机制

    前言,文件读取是提高应用体验度的必须接口,应用场景中需求很频繁. Js处理文件读取,由于处于安全方面的考虑,在2000年以前,都是以“<input type="file"&g ...

  8. C# 文件操作 把文件读取到字节数组

    string zipfile = "c:\\a.zip"; //方法1 FileStream fs = new FileStream(zipfile, FileMode.Open) ...

  9. H5学习系列之文件读取API--本文转自http://blog.csdn.net/jackfrued/article/details/8967667

    HTML5定义了FileReader作为文件API的重要成员用于读取文件,根据W3C的定义,FileReader接口提供了读取文件的方法和包含读取结果的事件模型. FileReader的使用方式非常简 ...

随机推荐

  1. tomcat发布脚本

    #!/bin/bash #发布相关目录Tomcat_log='/home/CodePub/tomcatlog'dev_package='/home/CodePub/package'old_packag ...

  2. ACM :漫漫上学路 -DP -水题

    CSU 1772 漫漫上学路 Time Limit: 1000MS   Memory Limit: 131072KB   64bit IO Format: %lld & %llu Submit ...

  3. python 编码问题

    参考原文:http://www.crifan.com/eclipse_pydev_console_messy_char_for_console_is_utf8/ 通用 rq = urllib.urlo ...

  4. 如何对tableview进行自定义多选

    前言: 很多入门不久的程序员或许都会遇到系统自带的tableview多选时cell选择时不能选择自己想要的点击时的颜色或者图片,这让初级开发者们很烦恼.今天,我试着花了几个小时的时间用了自己的想法,去 ...

  5. HDU 2689 Sort it (树状数组)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2689 Sort it Problem Description You want to processe ...

  6. Hadoop.2.x_常用端口及定义方法(转)

    组件   节点 默认端口 配置 用途说明 HDFS DataNode 50010 dfs.datanode.address datanode服务端口,用于数据传输 HDFS DataNode 5007 ...

  7. MySQL字符集

    字符集的选择 1.如果数据库只需要支持中文,数据量很大,性能要求也很高,应该选择双字节定长编码的中文字符集(如GBK).因为相对于UTF-8而言,GBK"较小",每个汉字只占2个字 ...

  8. Python之路第一课Day9--随堂笔记之二(进程、线程、协程篇)

    本节内容 进程.与线程区别 python GIL全局解释器锁 线程 语法 join 线程锁之Lock\Rlock\信号量 将线程变为守护进程 Event事件 queue队列 生产者消费者模型 Queu ...

  9. Android中数据存储(一)

    国庆没有给国家添堵,没有勾搭妹子,乖乖的写着自己的博客..... 本文将为大家介绍Android中数据存储的五种方式,数据存储可是非常重要的知识哦. 一,文件存储数据 ①在ROM存储数据 关于在ROM ...

  10. android 之httpclient方式提交数据

    HttpClient: 今天实战下httpclient请求网络json数据,解析json数据返回信息,显示在textview, 起因:学校查询饭卡余额,每次都要访问校园网(内网),才可以查询,然后才是 ...