关于unity3d 读取配置文件的文件

Unity3D游戏编程之读写XML文件
Unity3D游戏编程之读写XML文件
Unity3D游戏编程之读写XML文件
浏览次数:910
浏览次数:352
浏览次数:634
浏览次数:578
浏览次数:613
如果你对以下课程意犹未尽,,查看全部课程
HTML5全栈开发
HTML5最新课程
156 人在学
c#编程概述
C#快速入门
简单又好玩
120 人在学
没有账号?
s后重新发送
已有账号?
已有账号?
验证码确认
话题标题:
400-877-8190
登录后反馈匿名用户不能发表回复!|
每天回帖即可获得10分可用分!小技巧:
你还可以输入10000个字符
(Ctrl+Enter)
请遵守CSDN,不得违反国家法律法规。
转载文章请注明出自“CSDN(www.csdn.net)”。如是商业用途请联系原作者。14506人阅读
Unity3D(155)
今天要做一个移动平台的版本控制,先做一个前期的工作,就是从服务器端加载资源,然后读取到本地,再从本地读取资源。这里就以pc平台为例,移动平台也是一样,就是稍微做一点路径上的修改,下面是不同平台路径的预编译://不同平台下StreamingAssets的路径是不同的,这里需要注意一下。
public static readonly string PathURL =
#if UNITY_ANDROID
&jar:file://& + Application.dataPath + &!/assets/&;
#elif UNITY_IPHONE
Application.dataPath + &/Raw/&;
#elif UNITY_STANDALONE_WIN || UNITY_EDITOR
//windows平台和web平台
&file://& + Application.dataPath + &/StreamingAssets/&;
#endif关于资源的打包不理解的,我在之前的博文中有介绍:,可以去看一下这篇文章。操作步骤:创建脚本,命名Text.cs,并且将其拖放到MainCamera中using UnityE
using System.C
using System.IO;
using System.Collections.G
public class Text : MonoBehaviour {
//文本中每行的内容
//皮肤资源,这里用于显示中文
public GUIS
void Start ()
print(&当前文件路径:&+Application.persistentDataPath);
//删除文件
DeleteFile(Application.persistentDataPath,&FileName.txt&);
//创建文件,共写入3次数据
CreateFile(Application.persistentDataPath,&FileName.txt&,&dingxiaowei&);
CreateFile(Application.persistentDataPath,&FileName.txt&,&丁小未&);
//CreateFile(Application.persistentDataPath ,&Filename.assetbundle&,&丁小未&);
//下载模型
StartCoroutine(loadasset(&http://192.168.1.180/3DShowResource/Products/AssetBundles/HX_DY02.assetbundle&));
//得到文本中每一行的内容
infoall = LoadFile(Application.persistentDataPath,&FileName.txt&);
//写入模型到本地
IEnumerator loadasset(string url)
WWW w = new WWW(url);
if (w.isDone)
byte[] model = w.
int length = model.L
//写入模型到本地
CreateModelFile(Application.persistentDataPath, &Model.assetbundle&, model,length);
void CreateModelFile(string path, string name, byte[] info, int length)
//文件流信息
FileInfo t = new FileInfo(path + &//& + name);
if (!t.Exists)
//如果此文件不存在则创建
sw = t.Create();
//如果此文件存在则打开
//sw = t.Append();
//以行的形式写入信息
//sw.WriteLine(info);
sw.Write(info, 0, length);
sw.Close();
sw.Dispose();
* path:文件创建目录
* name:文件的名称
info:写入的内容
void CreateFile(string path,string name,string info)
//文件流信息
FileInfo t = new FileInfo(path+&//&+ name);
if(!t.Exists)
//如果此文件不存在则创建
sw = t.CreateText();
//如果此文件存在则打开
sw = t.AppendText();
//以行的形式写入信息
sw.WriteLine(info);
sw.Close();
sw.Dispose();
* 读取文本文件
* path:读取文件的路径
* name:读取文件的名称
ArrayList LoadFile(string path,string name)
//使用流的形式读取
StreamReader sr =
sr = File.OpenText(path+&//&+ name);
}catch(Exception e)
//路径与名称未找到文件则直接返回空
ArrayList arrlist = new ArrayList();
while ((line = sr.ReadLine()) != null)
//一行一行的读取
//将每一行的内容存入数组链表容器中
arrlist.Add(line);
sr.Close();
sr.Dispose();
//将数组链表容器返回
//读取模型文件
IEnumerator LoadModelFromLocal(string path, string name)
string s =
#if UNITY_ANDROID
s = &jar:file://&+path+&/&+
#elif UNITY_IPHONE
s = path+&/&+
#elif UNITY_STANDALONE_WIN || UNITY_EDITOR
s = &file://&+path+&/&+
WWW w = new WWW(s);
if (w.isDone)
Instantiate(w.assetBundle.mainAsset);
* path:删除文件的路径
* name:删除文件的名称
void DeleteFile(string path,string name)
File.Delete(path+&//&+ name);
void OnGUI()
//用新的皮肤资源,显示中文
GUI.skin =
//读取文件中的所有内容
foreach(string str in infoall)
//绘制在屏幕当中
GUILayout.Label(str);
if (GUILayout.Button(&加载模型&))
StartCoroutine(LoadModelFromLocal(Application.persistentDataPath, &Model.assetbundle&));
}上面设计到文件流操作,还有就是Application.persistentDataPath,这里并没有用Application.DataPath,后者貌似在移动平台是找不到的,前者就是所谓的沙盒文件,具有读写权限。运行后的效果:这里演示了读取操作文本和打包文件,如果切换到移动平台可能中文字体无法显示,就需要做个字体即可,后面继续版本控制后续工作。补充:假设你的程序中已经预先将2进制文件做好,如下图所示,你需要把二进制文件放在StreamingAssets这个文件夹中,一定要放在这里。举个例子,放在StreamingAssets中二进制文件打包后,Unity会将这些二进制文件放置在对应平台下的路径下。所以根据不同平台,访问的路径是不一样的。切记,你的二进制文件一定要放在StreamingAssets !!!!!!0102&&&&&&&&string filepath = Application.dataPath +&/StreamingAssets&+&/my.xml&;03&0405&&&&&&string filepath = Application.dataPath +&/Raw&+&/my.xml&;06&0708&&&&&&string filepath = &jar:& + Application.dataPath + &!/assets/&+&/my.09&10&==================== 迂者 丁小未 CSDN博客专栏=================MyBlog:& & & & & & &MyQQ:Unity QQ群:& & & & cocos2dx QQ群:======================&相互学习,共同进步&===================
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:1223061次
积分:17251
积分:17251
排名:第444名
原创:397篇
转载:221篇
评论:368条
我叫小未,网名Aladdin,主做U3D游戏程序,某普通本科学校毕业,但不甘于平庸,喜欢尝试,喜欢研究计算机技术,13年9月份开始工作,曾两年就职于巨人网络做游戏客户端程序,闲暇时间做过麦子学院在线讲师,做过独立开发,做过C#游戏服务器和.NET Web服务器,做过IOS原生开发,爱游戏,爱coding!
学习交流群:
unity3D:(满员),;
阅读:8459
文章:10篇
阅读:17000
文章:12篇
阅读:13744
文章:24篇
阅读:99926
文章:13篇
阅读:21502
文章:31篇
阅读:71735
文章:34篇
阅读:51648
文章:20篇
阅读:41613
(2)(9)(2)(1)(3)(3)(1)(2)(1)(1)(4)(2)(2)(1)(1)(1)(3)(1)(1)(3)(1)(4)(2)(6)(17)(12)(13)(17)(12)(24)(32)(58)(42)(12)(48)(126)(33)(2)(2)(13)(9)(15)(5)(12)(14)(17)(5)(1)(1)(17)(2)(2)unity3d中的坑和解决方案 -
- ITeye技术网站
博客分类:
unity3d中的坑和解决方案
unity3d是一个很牛x的引擎,当然其也有一些东西是不太好或者说不习惯的,下面列举一些:
1、制作特效时,使用animation记录的位置是相对位置,如果直接放到别的节点下会出问题;
解决方法:在特效根节点的上一层加上一个transform是(0,0,0) (0,0,0)(1,1,1)的父节点,之后再使用和处理父节点
2、使用NGUI制作界面时,ui特效会有位置对不上的问题(美术不会用ngui,使用原始的模型+材质贴图的形式来做特效)
解决方法:让美术将特效直接做到ui上面
3、美术制作的特效导出时丢失材质和贴图
解决方案:要求美术在建模时不准挂材质,所有的材质不使用自动生成的,而是在unity里面新建、挂接,程序也可以提供删掉默认材质的编辑器扩展插件 (assetImporter as ModelImporter).importMaterials =
4、多人间合作时的文件共享和版本控制
解决方案:1》Edit-&Project Settings-&Editor 打开 meta files 2》meta文件和原始文件一起同步 3》checkout时 按住 左边的alt键或option键
5、文本化场景文件
解决方案:edit----project setting ----editr 将Asset Serialization 的 mode 设置成Force Text
6、ngui的界面元素无法响应
解决方案:制作ui时注意设置摄像机的eventReceiverMask的层为对应的层
7、摄像机看不到ui
解决方案:将ui的层设置为摄像机对应的渲染的层
8、脚本中start和update等函数不能继承
解决方案:将这几个函数内的逻辑抽象成函数,之后子类中继承这些函数
9、脚本调用时因为空引用而崩溃
解决方案:所有初始化工作写在start中,所有功能写到update中,如果仅执行一次,可以加个bool型的开关 10、等待某个特效播完
解决方案:可以使用coroutine来等待
11、跨平台动态加载贴图、音频
解决方案:使用www
12、周期性的活动,如每4拍换一个舞步
解决方案:当前时间/周期 减去整数部分,与0.5比较
13、换装重新组织SkinnedMeshRenderer的sharedMesh时骨骼对不上
解决方案:所有avatar的部件的骨架设置要一模一样
14、减少动作文件的大小
解决方案:游戏开始时动态的将animation加到mesh上面
15、全局功能需要多处调用
解决方案:将全局功能直接挂到程序节点ProgramRoot上,使用时直接 GameObject.Find("ProgramRoot").GetComponentInChildren
16、GameObject.Find找不到隐藏的节点
解决方案:定义public GameObject 属性,之后在编辑器里面拖拽
17、各个界面间数据的共享
解决方案:创建单独的GameWorld等数据模型模块,并统一实现序列化和反序列化
18、分时的状态逻辑 解决方案:coroutine加配置表
19、灵活的object的属性
解决方案:Dictionary&string, string& propsT
20、灵活的事件响应回调
解决方案:统一继承BaseCallBack,里面写具体的逻辑
21、渲染暂停时实现动态效果
解决方案:Time.timeScale = 0f; 程序通过 Time.realtimeSinceStartup来手动实现特效效果
22、炫酷的显示得分
解决方案:每一位数字用一张数字的贴图来实现
23、ui特效阻碍ui的响应
解决方案:调整z值,使特效在ui的后面
24、特殊的运动轨迹和手感 解决方案:用animation编辑器做成动画来播放
浏览 13602
eric_weitm
浏览: 91421 次
来自: 北京
你对hiphop的深入程度到了什么程度了?想和你进行探讨一下
lj3362569 写道可以再讲具体点么?还有现有的hipho ...
可以再讲具体点么?还有现有的hiphop不支持哪些功能?[笨木头Unity3D]杂记003·Unity在Android中读取文件
如果文章对您有所帮助,欢迎给作者捐赠,支持笨木头的独立游戏工作,捐赠数额随意,重在心意^_^ +
这周被一个问题给折腾了几个晚上,那就是在Android中读取文件,这本是一件很简单的事情,可想象总是美好的。
笨木头花心贡献,啥?花心?不,是用心。
转载请注明,原文地址:
文章来源:
1.在电脑上读取文件
首先要解决的当然是在电脑上读取文件了,这个并不难,网上一堆资料。
public static string LoadFile(string filePath)
string url = Application.streamingAssetsPath + &/& + filePath;
return File.ReadAllText(url);
文件必须放在Assets\StreamingAssets目录下(可以有子目录),否则移植到其他设备后,会无法读取文件的。
这个目录下的文件是只能读不能写的,我的目的也仅仅是读取文件。
Application.streamingAssetsPath会自动根据不同的平台返回该平台下对应的正确路径(Assets\StreamingAssets目录下的文件在不同平台里会保存到不同的路径,所以需要取出正确的路径)。
然后就是使用File.ReadAllText读取整个文件,保存为一个字符串对象。
2.在Android上读取文件
在电脑上读取文件很简单,毕竟资料多,而在Android上读取文件就很惨烈了。
也许大家关注的都是Ios吧,唯独我是优先关注Android的。
大家可以试试去搜索一下,基本上第一条搜到的就是宣雨松Momo的博客,他写的是【读写文件】的方式(是100%能成功的)。
但是那种方式需要在代码里创建文件,然后再读取文件,而我需要的是读取静态文件,也就是预先创建好的文件。
Momo估计也是比较专注于Ios的,所以他没有进行太多Android的测试。
其他搜索的文章也大多在说路径的问题(也就是我第一条标题里所说的内容)。
所以,我不得不发发牢骚,太神奇了,为什么会这么少人关注Android读取的问题呢?
难道这个在API文档里有写?(如果有,请告诉我,我没找到,不知道该用什么关键字)
好了,不唠叨了,少是少了点,但还是有资料提到这个问题的。
说解决方案,也确实很简单,在Android里读取文件,得用WWW来读取,如下代码:
public static string LoadFile(string filePath)
string url = Application.streamingAssetsPath + &/& + filePath;
#if UNITY_EDITOR
return File.ReadAllText(url);
#elif UNITY_ANDROID
WWW(url);
while (!www.isDone) { }
return www.text;
理论上WWW是用来读取网络文件的,而Android上需要用这种方式来读取,让我觉得很奇怪。
也许有更好的方式?如果有,希望能和我分享一下。
这里有个小地方要注意的,如果你希望把读取的文本按行分割,可以这么做:
return www.text.Split(new string[] { “\r\n” }, StringSplitOptions.None);
要用”\r\n”来分割,而不是”\n”,否则会出现乱七八糟的怪问题(别问我是怎么知道的,心疼,不想提)。
好了,希望我这篇文章能帮到和我一样被这个问题折腾的人。
为了让更多人能够第一时间搜到我的文章,而不是那些无法对这个问题提供帮助的文章,我额外列一些关键字:
Unity 读取Android文件
Unity 读取安卓文件
-------------------------------------------------------- End --------------------------------------------------------
如果文章对您有所帮助,欢迎给作者捐赠,支持笨木头的独立游戏工作,捐赠数额随意,重在心意^_^ +
---------------------------------------------------------------------------------------------------------------------
<a href='/item.htm?spm=686..0.psHW3K&id=' alt="Cocos2d-x3.0
【上一篇】【下一篇】
关于扫码关注公众号^V^
博主:笨木头
关注:Unity、Cocos2d-x
访问:258327 次
----------------------------
邮件联系:
----------------------------
Cocos2d-x游戏源码:
Cocos2d-x网游源码:
Cocos2d-x网游源码(new):
只看感兴趣的
木头的新书出版喇
大家都在讨论

我要回帖

更多关于 unity3d文件解包 的文章

 

随机推荐