前几天有个朋友问我为什么在IOS平台中可以正常的读写文件可是在Android平台中就无法正常的读写。当时因为在上班所以我没时间来帮他解决,晚上回家后我就拿起安卓手机真机调试很快就定位问题所在,原来是他文件的路径写错了。开发中往往一道很难的问题解开的时候发现原来真的非常的简单,哇咔咔。 刚好在MOMO的书中也有涉及到文件的读取与写入,那么本节我将书中的部分内容搬到博客中为大家讲解一下。废话我就不多说了咱直奔主题,创建Text.cs脚本,直接挂在摄像机中。代码中包括:创建文件、读取文件、删除文件。
Text.cs
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 |
using UnityEngine; using System.Collections; using System.IO; using System.Collections.Generic; using System; public class Text : MonoBehaviour { //文本中每行的内容 ArrayList infoall; //皮肤资源,这里用于显示中文 public GUISkin skin; void Start () { //删除文件 DeleteFile(Application.persistentDataPath,"FileName.txt"); //创建文件,共写入3次数据 CreateFile(Application.persistentDataPath,"FileName.txt","宣雨松MOMO"); CreateFile(Application.persistentDataPath,"FileName.txt","宣雨松MOMO"); CreateFile(Application.persistentDataPath ,"FileName.txt","宣雨松MOMO"); //得到文本中每一行的内容 infoall = LoadFile(Application.persistentDataPath,"FileName.txt"); } /** * path:文件创建目录 * name:文件的名称 * info:写入的内容 */ void CreateFile(string path,string name,string info) { //文件流信息 StreamWriter sw; FileInfo t = new FileInfo(path+"//"+ name); if(!t.Exists) { //如果此文件不存在则创建 sw = t.CreateText(); } else { //如果此文件存在则打开 sw = t.AppendText(); } //以行的形式写入信息 sw.WriteLine(info); //关闭流 sw.Close(); //销毁流 sw.Dispose(); } /** * path:读取文件的路径 * name:读取文件的名称 */ ArrayList LoadFile(string path,string name) { //使用流的形式读取 StreamReader sr =null; try{ sr = File.OpenText(path+"//"+ name); }catch(Exception e) { //路径与名称未找到文件则直接返回空 return null; } string line; ArrayList arrlist = new ArrayList(); while ((line = sr.ReadLine()) != null) { //一行一行的读取 //将每一行的内容存入数组链表容器中 arrlist.Add(line); } //关闭流 sr.Close(); //销毁流 sr.Dispose(); //将数组链表容器返回 return arrlist; } /** * path:删除文件的路径 * name:删除文件的名称 */ void DeleteFile(string path,string name) { File.Delete(path+"//"+ name); } void OnGUI() { //用新的皮肤资源,显示中文 GUI.skin = skin; //读取文件中的所有内容 foreach(string str in infoall) { //绘制在屏幕当中,哇咔咔! GUILayout.Label(str); } } } |
代码中头文件需要注意一下,涉及到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://1vr.cn/article.asp?id=607 他已经写得很清楚啦。
最后本文的程序MOMO已经打成包,雨松MOMO希望和大家一起学习,一起进步加油哇咔咔,拉拉~~
下载地址:http://vdisk.weibo.com/s/ab_aA
补充:假设你的程序中已经预先将2进制文件做好,如下图所示,你需要把二进制文件放在StreamingAssets这个文件夹中,一定要放在这里。
举个例子,放在StreamingAssets中二进制文件打包后,Unity会将这些二进制文件放置在对应平台下的路径下。所以根据不同平台,访问的路径是不一样的。切记,你的二进制文件一定要放在StreamingAssets !!!!!!
1 2 3 4 5 6 7 8 9 10 |
#if UNITY_EDITOR string filepath = Application.dataPath +"/StreamingAssets"+"/my.xml"; #elif UNITY_IPHONE string filepath = Application.dataPath +"/Raw"+"/my.xml"; #elif UNITY_ANDROID string filepath = "jar:file://" + Application.dataPath + "!/assets/"+"/my.xml; #endif |
- 本文固定链接: https://www.xuanyusong.com/archives/1069
- 转载请注明: 雨松MOMO 于 雨松MOMO程序研究院 发表
我现在用Android7.0.的VR眼镜,在外置的sd卡上可以读文件,但是却无法写文件,总是提示“ UnauthorizedAccessException: Access to the path “/storage/BEB7-1F08/1.txt” is denied”,我的权限也设置好了,请问知道是什么原因吗
宣老师,我是参照这个链接http://m.blog.csdn.net/asd237241291/article/details/50506185
的方法读的csv,在编辑器和Android好好的,到了ios却读不出来,为什么,求救~
http://tieba.baidu.com/p/4627404106 帮忙看下这个问题。解决了请你喝咖啡
找到了给个答案再走嘛,我也碰到xcode找不到的问题了
老师,具体的代码我发你邮箱了,有时间帮看看呗 谢谢啊[耶]
在修改xml保存的时候报错IOException: Sharing violation on path,不是每次都报错,这是啥问题啊[泪]
改成.txt文件就好了
我们项目是使用xml保存本地配置的。一直使用都很顺利。最近看到酷派上报了同样的异常Sharing violation on path。你能描述一下格式改为.txt就能解决问题的原理吗?
雨松大神,我想把StreamingAssets下的文件复制到persistentDataPath路径下,应该怎么做呢?
用www来读然后在拷贝就行了。。
是安卓平台的。我先用 WWW www = new WWW(path1 + “/Test.assetbundle”);
yield return www;
之后可以用File.Copy();吗?还是要用别的方法?求MOMO大神指点,教教我该怎么做[泪][泪]
StreamingAssets 在android下不能通过File类去访问, 因为它不是一个文件夹, 但是IOS可以。 所以可以通过www.去 加载。 然后再把byte[]写到persistentDataPath 目录下。。
[good]感谢MOMO大神[给力]
是安卓平台的。我先用 WWW www = new WWW(path1 “/Test.assetbundle”);
yield return www;
之后可以用File.Copy();吗?还是要用别的方法?求MOMO大神指点,教教我该怎么做[泪][泪]
如果我想保存手机相机拍到的照片,在下一次进入游戏时可以使用,应该用什么路径?用persistentDataPath貌似会被缓存清理软件清除
雨松大大,为什么我打包成APK在安卓机安卓后找不到生成的文件,是不是权限什么的还要设置?
有的手机是写不了LOG得。。
“jar:file://” Application.dataPath “!/assets/” “/my.xml; 这一句是不是最后面漏了一个 “ 号? 这样写我这边报错了
“jar:file://” + Application.dataPath + “!/assets/”+”/my.xml; 这一句是不是最后面漏了一个 “ 号? 这样写我这边报错了
Application.StreamingAssets 现在直接提供这样的路径。。
StreamingAssets可读不可写。
能读 不能写
在android(SDK 19)系统中使用Application.persistentDataPath读写输入时,Application.persistentDataPath返回路径为空?Logcat报错如下:UnauthorizedAccessException: Access to the path “/emailData.txt” is denied.关于读写权限在AndroidManifest中也是配了的: 不知道这是什么鬼啊。。求帮助!
貌似没加这个?READ_EXTERNAL_STORAGE
MOMO你好,我在做播放器,电影文件选取本地绝对路径 ,下面2句话是大概的意思 ,用什么方法最简单可以处理, var movieTexture : MovieTexture;movieTexture = D:/383.MP4;
MOMO你好,你有没有试试在Windows Phone 8上用Application.persistentDataPath读取路径?比如我在U3D里面在Assets中创建一个文本文件,我在windows phone8上面如何读取它呢?
請問如果每次执行都要进行删除和创建, 那麼是不是就沒辦法紀錄資料了 還是我理解有誤呢?
MOMO您好,我把AssetBundle保存在StreamingAssets目录下了,想使用FileStream来读取。但总是在Android设备上出现DirectoryNotFound异常。使用WWW读取就可以。难道只能用WWW么?WWW无法获取目录结构,很麻烦啊……您遇到过这个问题吗?O(∩_∩)O谢谢
FileStream 肯定是不能读的。你可以把文件封装成 assetbundle 不过你可以用 AssetBundle.CreateFromFile 这个是同步的。 现在android 和 ios 上都支持了。。很好用。
不过文件形式的AssetBundle不是必须是不压缩的么。。。我们的都压缩了啊。T_T
你可以自己压缩。 用GZIP 或者 LZMA 下载完在解压缩 保存在本地。。
Close只是对Dispose的封装吧…听起来更形象一点..
Dispose销毁流有什么作用呢,关闭流不就可以了么
这个。我再android上 用www 加载 资源 完全加载不到 说是空,对应的 资源我再pc上可以顺利加载,是 android上就不支持 加载么? 加载路径我各种组合尝试都用了,比如 string path = “jar:file://” Application.persistentDataPath “!/assets/” getFileName(BundleURL); string path = “jar:file://” Application.dataPath “!/assets/” getFileName(BundleURL);还有各种反正就是 各种不能用。求楼主在android系统上试试。多谢。我看网上很多都是对win平台的 其实没啥用。。。
这个。我再android上 用www 加载 资源 完全加载不到 说是空,对应的 资源我再pc上可以顺利加载,是 android上就不支持 加载么? 加载路径我各种组合尝试都用了,比如 string path = “jar:file://” + Application.persistentDataPath + “!/assets/” + getFileName(BundleURL); string path = “jar:file://” + Application.dataPath + “!/assets/” + getFileName(BundleURL);还有各种反正就是 各种不能用。求楼主在android系统上试试。多谢。我看网上很多都是对win平台的 其实没啥用。。。
在PC机上 也是这么写的么?宣老爷、
嗯
MOMO大哥我想请教个问题,我想从IOS上读取xml文件上的信息。xml文件中有关卡的一些数据,我用的是Application.persistentDataPath 文件名,bulid出文件之后,在虚拟机上运行就读不了了。我不需要往xml文件中写入东西,只要读取数据就行。请问我的xml文件要放到哪啊?是代码问题还是xml文件放的不对啊?
MOMO大哥我想请教个问题,我想从IOS上读取xml文件上的信息。xml文件中有关卡的一些数据,我用的是Application.persistentDataPath+文件名,bulid出文件之后,在虚拟机上运行就读不了了。我不需要往xml文件中写入东西,只要读取数据就行。请问我的xml文件要放到哪啊?是代码问题还是xml文件放的不对啊?
应该放在 StreamingAssets 文件夹下面。。
momo老师,怎么在unity改变模型的正面朝向,即Z轴的指向。例如我炮管朝前,而炮管模型的Z轴却朝后,怎么把Z轴朝前,用代码怎么实现?
这个文件夹是自己在工程中的Assets文件夹下自己建的么?现在我用另一种方法解决了这问题,但是还是想知道这个是咋回事
不是自己创建的, 得你自己手动创建StreamingAssets。。文件夹。。。
啊…我的意思就是自己手动创建的呢。。
保存的文件存在哪里了呢?在虚拟机的位置是哪里呢?希望能告诉一下
在苹果机和xcode里面都找不到
找到了,哎~对苹果的设备不熟悉啊。。。
好吧, 自己解决问题了。。 加油 蛤蛤。。
雨松大哥我想请教个问题,在pc上面我使用www读取本地音乐文件,wav和ogg都没有问题但是mp3格式的就报错误Streaming of ‘mp3’ on this platform is not supported,是不是mp3格式的不支持www读取。 public static IEnumerator musicFromFileAtPath(string path,AudioSource mc){ path = “file://” path; WWW www= new WWW(path);yield return www; mc.clip = http://www.audioClip; mc.Play();}
雨松大哥我想请教个问题,在pc上面我使用www读取本地音乐文件,wav和ogg都没有问题但是mp3格式的就报错误Streaming of ‘mp3’ on this platform is not supported,是不是mp3格式的不支持www读取。 public static IEnumerator musicFromFileAtPath(string path,AudioSource mc){ path = “file://”+path; WWW www= new WWW(path); yield return www; mc.clip = http://www.audioClip; mc.Play(); }
不支持, 我记得官网上说过只支持ogg的
在IOS平台下,我修改了文件内容要刷新怎么刷新呢?在编辑器下面是AssetDatabase.Refresh(),但是在IOS平台好像不行。
AssetDatabase.Refresh(), 只能在编辑器下使用的。刷新文件后 程序重新读取一下就可以了
解决了就好, 呵呵。。
老师的包我下下来在windows平台的编译器上运行, Application.persistentDataPath = “”, dataPath有值,很奇怪,不知道有有没有和我一样碰到同样问题的童鞋。貌似在真机上没问题
persistentDataPath 这个是在IOS 和 android下用的路径。。dataPath 是资源路径。。
MOMO老师好,我测试过上面的代码,当我仅使用LoadFile()的代码时不能在Android显示,我试过只有在执行删除、创建后,才能正确读取并显示,好迷惑~~(╯﹏╰)
已经解决了,在CreateFile()函数中用Unity的TexAsset.text读取本地文件,即CreateFile(path,TexAsset.text,fileName.txt) 就可以了,只是每次执行都要进行删除和创建,会降低效率
using UnityEngine;
using System.Collections;
using System.IO;
using ICSharpCode.SharpZipLib.Zip;
using ICSharpCode.SharpZipLib.Core;
using System;
public class Test : MonoBehaviour
{
string path = “”;
void Start()
{
path = “jar:file://” Application.dataPath “!/assets/”;
//readFile(“test.txt”);
// File.WriteAllText(Application.persistentDataPath “/xx2.txt”, “xxxxxxxxxxxxxxxxxxxx”);
UnZipFile(Application.dataPath, “assets”);
}
#region 解压资料处理fn
//判断是否已经解压
bool checkDecompressingFiles(string flag_file)
{
if (!File.Exists(Application.persistentDataPath “/” flag_file))
{
File.WriteAllText(Application.persistentDataPath “/” flag_file, “a”);
return false;
}
return true;
}
/*
* 没有测试过
ICSharpCode.SharpZipLib.Zip.FastZip zip = new ICSharpCode.SharpZipLib.Zip.FastZip();
zip.CreateZip(“C:\foo.zip”, “C:\待压缩的文件夹”, true, “”); //第三个参数表示是否压缩子文件夹
zip.ExtractZip(“C:\foo.zip”, “C:\压缩后存放的文件夹”, “”);
如果我们只想压缩目录中的一个或部分文件,或者我们只想解压文件中的一个或部分文件,怎么办呢?那就得把最后一个参数用上,它是字符串类型的正则表达式,比如只压缩 ini 文件用:”^.*(.ini)$”。
*/
//用第三方工具去读取 zip
void UnZipFile(string zipFilePath,string dir)
{
if (checkDecompressingFiles(“init.txt”)) {
stringToEdit = ” 已经解压过了”;
return;
}else
stringToEdit = ” 第一次解压”;
using (ZipInputStream s = new ZipInputStream(File.OpenRead(zipFilePath)))
{
ZipEntry theEntry;
while ((theEntry = s.GetNextEntry()) != null)
{
string directoryName = Path.GetDirectoryName(theEntry.Name);
string fileName = Path.GetFileName(theEntry.Name);
// print(“directoryName:” directoryName);
// print(“fileName:” fileName);
if (directoryName.Length > 0 && directoryName.Contains(dir))
{
//stringToEdit = ” directoryName:” directoryName “n”;
Directory.CreateDirectory(Application.persistentDataPath “/” directoryName);
if (fileName != string.Empty)
{
using (FileStream streamWriter = File.Create(Application.persistentDataPath “/” theEntry.Name))
{
int size = 2048;
byte[] data = new byte[2048];
while (true)
{
size = s.Read(data, 0, data.Length);
if (size > 0)
streamWriter.Write(data, 0, size);
else
break;
}
}
}
}
}
}
}
//直接用 unty www 去读取 jar 跟 zip 标准差不多吧
void readFile(string file)
{
path = file;
if (File.Exists(path))
{
stringToEdit = “yes”;
}
else
{
stringToEdit = “no”;
WWW www = new WWW(path);
while (!www.isDone) { }
stringToEdit = ” ” http://www.text;
stringToEdit =” ReadAllText:” File.ReadAllText(path);
}
}
#endregion
private string stringToEdit = “”;
void Update ()
{
//点击手机返回键关闭应用程序
if (Input.GetKeyDown(KeyCode.Escape) || Input.GetKeyDown(KeyCode.Home) )
{
Application.Quit();
}
}
void OnGUI()
{
GUILayout.TextField(“persistentDataPath:” Application.persistentDataPath);
GUILayout.TextField(“dataPath:” Application.dataPath);
GUILayout.TextField(“temporaryCachePath:” Application.temporaryCachePath);
stringToEdit = GUILayout.TextArea (stringToEdit, GUILayout.Width(300),GUILayout.Height(250));
}
}
//用到解压的库。。。http://www.icsharpcode.net/OpenSource/SharpZipLib/Download.aspx
//感谢:雨松MOMO http://www.xuanyusong.com/
using UnityEngine;
using System.Collections;
using System.IO;
using ICSharpCode.SharpZipLib.Zip;
using ICSharpCode.SharpZipLib.Core;
using System;
public class Test : MonoBehaviour
{
string path = “”;
void Start()
{
path = “jar:file://” + Application.dataPath + “!/assets/”;
//readFile(“test.txt”);
// File.WriteAllText(Application.persistentDataPath + “/xx2.txt”, “xxxxxxxxxxxxxxxxxxxx”);
UnZipFile(Application.dataPath, “assets”);
}
#region 解压资料处理fn
//判断是否已经解压
bool checkDecompressingFiles(string flag_file)
{
if (!File.Exists(Application.persistentDataPath + “/” + flag_file))
{
File.WriteAllText(Application.persistentDataPath + “/” + flag_file, “a”);
return false;
}
return true;
}
/*
* 没有测试过
ICSharpCode.SharpZipLib.Zip.FastZip zip = new ICSharpCode.SharpZipLib.Zip.FastZip();
zip.CreateZip(“C:\foo.zip”, “C:\待压缩的文件夹”, true, “”); //第三个参数表示是否压缩子文件夹
zip.ExtractZip(“C:\foo.zip”, “C:\压缩后存放的文件夹”, “”);
如果我们只想压缩目录中的一个或部分文件,或者我们只想解压文件中的一个或部分文件,怎么办呢?那就得把最后一个参数用上,它是字符串类型的正则表达式,比如只压缩 ini 文件用:”^.*(.ini)$”。
*/
//用第三方工具去读取 zip
void UnZipFile(string zipFilePath,string dir)
{
if (checkDecompressingFiles(“init.txt”)) {
stringToEdit += ” 已经解压过了”;
return;
}else
stringToEdit += ” 第一次解压”;
using (ZipInputStream s = new ZipInputStream(File.OpenRead(zipFilePath)))
{
ZipEntry theEntry;
while ((theEntry = s.GetNextEntry()) != null)
{
string directoryName = Path.GetDirectoryName(theEntry.Name);
string fileName = Path.GetFileName(theEntry.Name);
// print(“directoryName:” + directoryName);
// print(“fileName:” + fileName);
if (directoryName.Length > 0 && directoryName.Contains(dir))
{
//stringToEdit += ” directoryName:” + directoryName+”n”;
Directory.CreateDirectory(Application.persistentDataPath + “/” + directoryName);
if (fileName != string.Empty)
{
using (FileStream streamWriter = File.Create(Application.persistentDataPath + “/” + theEntry.Name))
{
int size = 2048;
byte[] data = new byte[2048];
while (true)
{
size = s.Read(data, 0, data.Length);
if (size > 0)
streamWriter.Write(data, 0, size);
else
break;
}
}
}
}
}
}
}
//直接用 unty www 去读取 jar 跟 zip 标准差不多吧
void readFile(string file)
{
path+= file;
if (File.Exists(path))
{
stringToEdit = “yes”;
}
else
{
stringToEdit = “no”;
WWW www = new WWW(path);
while (!www.isDone) { }
stringToEdit += ” ” + http://www.text;
stringToEdit+=” ReadAllText:”+File.ReadAllText(path);
}
}
#endregion
private string stringToEdit = “”;
void Update ()
{
//点击手机返回键关闭应用程序
if (Input.GetKeyDown(KeyCode.Escape) || Input.GetKeyDown(KeyCode.Home) )
{
Application.Quit();
}
}
void OnGUI()
{
GUILayout.TextField(“persistentDataPath:” + Application.persistentDataPath);
GUILayout.TextField(“dataPath:” + Application.dataPath);
GUILayout.TextField(“temporaryCachePath:” + Application.temporaryCachePath);
stringToEdit = GUILayout.TextArea (stringToEdit, GUILayout.Width(300),GUILayout.Height(250));
}
}
//用到解压的库。。。http://www.icsharpcode.net/OpenSource/SharpZipLib/Download.aspx
//感谢:雨松MOMO http://www.xuanyusong.com/
感谢哈啊
解决了,,,下面说下步骤
test.txt
AssetsPluginsAndroidassetstest.txt
void readFile(string file)
{
path = “jar:file://” Application.dataPath “!/assets/” file;
if (File.Exists(path))
{
stringToEdit = “yes”;
}
else
{
stringToEdit = “no”;
WWW www = new WWW(path);
while (!www.isDone) { }
stringToEdit = ” ” http://www.text;
}
}
不知道为什么 File.Exists(path)会检测不到文件,,,不过能读取就可以了
打下广告
http://www.cnblogs.com/solq/archive/2012/05/21/2511522.html
解决了,,,下面说下步骤
test.txt
AssetsPluginsAndroidassetstest.txt
void readFile(string file)
{
path = “jar:file://” + Application.dataPath + “!/assets/” + file;
if (File.Exists(path))
{
stringToEdit = “yes”;
}
else
{
stringToEdit = “no”;
WWW www = new WWW(path);
while (!www.isDone) { }
stringToEdit += ” ” + http://www.text;
}
}
不知道为什么 File.Exists(path)会检测不到文件,,,不过能读取就可以了
打下广告
http://www.cnblogs.com/solq/archive/2012/05/21/2511522.html
解决了就好 , 呵呵
我刚才又查了下, unity Application.dataPath 是向指 /data/app/xxx.xxx.xxx.apk 的,查看 view 可以找到里面的资源,,,
但是我用
void readFile(string file)
{
path = “jar:file://” Application.dataPath “!/assets/” file;
if (File.Exists(path))
{
stringToEdit = “yes”;
}
else
{
stringToEdit = “no”;
}
}
检测不到文件。。。这又怎么办。。。就差一点了…..
我刚才又查了下, unity Application.dataPath 是向指 /data/app/xxx.xxx.xxx.apk 的,查看 view 可以找到里面的资源,,,
但是我用
void readFile(string file)
{
path = “jar:file://” + Application.dataPath + “!/assets/” + file;
if (File.Exists(path))
{
stringToEdit = “yes”;
}
else
{
stringToEdit = “no”;
}
}
检测不到文件。。。这又怎么办。。。就差一点了…..
呵呵,回复真快,不是的,,,比如说 在 unity assets 目录里有个test.txt 文件,,,我安装后来怎么访问呢?
android ,ios 的群也开了,,,开个 unity 的吧。。。。
嗯嗯, 抽时间开一个,感谢你的提议!
你好,博主,我也正找之方面读取 android 文件的资料
我发觉用 unity 生成 apk包,安装好后, unity的资源找不到在那里目录,查了下安装app的目录
unity Application.persistentDataPath 是指向 /data/data/xxx.xxx.xx/files/ 里
我是想,找不到就想办法 安装好之后,把unity 资源复制到 /data/data/xxx.xxx.xx/files/ 里就可以,,
但是我不是很了解 android 打包是怎样的,博主有遇到这个问题吗?
这个能实现吗?
打包的话 是unity自身完成的。。 你说的是那里的路径你访问不了?
你好,博主,我也正找之方面读取 android 文件的资料
我发觉用 unity 生成 apk包,安装好后, unity的资源找不到在那里目录,查了下安装app的目录
unity Application.persistentDataPath 是指向 /data/data/xxx.xxx.xx/files/ 里
我是想,找不到就安装里之后,把unity 资源复制到 /data/data/xxx.xxx.xx/files/ 里就可以,,
但是我不是很了解 android 打包是怎样的,博主有遇到这个问题吗?
不错。。。。请问下载的提取码是???
不用提取码啊, 直接下点击普通下载就行。。
前来支持!!一起加油!
来顶一个,哈哈哈
小能能…
我是小能能 蛤蛤
沙发
好吧,凯凯!!