Unity3D研究院之将场景导出XML或JSON或二进制并且解析还原场景四十二

导出Unity场景的所有游戏对象信息,一种是XML一种是JSON。本篇文章我们把游戏场景中游戏对象的、旋转、缩放、平移与Prefab的名称导出在XML与JSON中。然后解析刚刚导出的XML或JSON通过脚本把导出的游戏场景还原。在Unity官网上下载随便下载一个demo Project,如下图所示这是我刚刚在官网上下载的一个范例程序。

接着将层次视图中的所有游戏对象都封装成Prefab保存在资源路径中,这里注意一下如果你的Prefab绑定的脚本中有public Object 的话 ,需要在代码中改一下。。用 Find() FindTag()这类方法在脚本中Awake()方法中来拿,不然Prefab动态加载的时候无法赋值的,如下图所示,我把封装的Prefab对象都放在了Resources/Prefab文件夹下。

OK,现在我们就需要编写我们的导出工具、在Project视图中创建Editor文件夹,接着创建脚本MyEditor 。如下图所示。

因为编辑的游戏场景数量比较多,导出的时候我们需要遍历所有的游戏场景,一个一个的读取场景信息。然后取得游戏场景中所有游戏对象的Prefab的 名称 旋转 缩放 平移。有关XML的使用请大家看我的上一篇文章Unity3D研究院之使用 C#合成解析XML与JSON(四十一)代码中我只注释重点的部分,嘿嘿。

MyEditor.cs

OK。此时我们就可以导出游戏场景的信息拉,注意游戏场景的需要现在Project Setting 中注册。点击 GameObject – > Export XML 和 GameObject – > ExportJson 菜单项即可开始生成

如下图所示,场景导出完毕后,会将xml 与Json 文件保存在StreamingAssets路径下,放在这里的原因是方便移动平台移植,因为它们属于二进制文件,移动平台在读取二进制文件的路径是不一样的。一定要放在这里喔。

接着,我继续创建两个游戏场景,一个用来解析XML的场景,一个用来解析JSON的场景。

XML场景中,创建一个空的游戏对象,把XML.cs挂上去。

接着JSON场景中,创建一个空的游戏对象,把JSON.cs挂上去。

;
;
;
LitJson ;
JSON {
// Use this for initialization
)
{
#if UNITY_EDITOR
"/json.txt" ;
#elif UNITY_IPHONE
;
#endif
StreamReader sr OpenText ;
strLine sr ReadToEnd ;
JsonData jd JsonMapper ToObject strLine ;
gameObjectArray jd [ "GameObjects" ] ;
int i j k ;
for i ; < gameObjectArray Count i ++ )
{
senseArray [ "scenes" ;
j senseArray j )
{
sceneName ( string ) ;
sceneName )
{
;
}
gameObjects "gameObject" ;
k k )
{
objectName ;
objectName ;
;
;
;
position ;
rotation ;
scale ;
[ "x" ;
"y" ;
"z" ;
;
;
;
;
;
;
;
;
}
}
}
}
// Update is called once per frame
) {
}
)
{
"JSON WORLD" )
{
"XMLScene" ;
}
}
本例XML和JSON的解析与还原场景,在IOS真实设备上测试通过。

本例的下载地址:http://vdisk.weibo.com/s/k0_DE

相关文章

这篇文章将为大家详细讲解有关Unity3D中如何通过Animator动画...
这篇文章主要介绍了Unity3D如何播放游戏视频,具有一定借鉴价...
这篇文章给大家分享的是有关Unity3D各平台路径是什么的内容。...
小编给大家分享一下Unity3D如何实现移动平台上的角色阴影,希...
如何解析基于Unity3D的平坦四叉树地形与Virtual Texture的分...
这篇文章主要介绍Unity3D如何实现动态分辨率降低渲染开销,文...