欢迎来到天天文库
浏览记录
ID:48621080
大小:218.88 KB
页数:12页
时间:2020-01-30
《unity3D技术之导出Unity场景的所有游戏对象信息.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、导出Unity场景的所有游戏对象信息,一种是XML一种是JSON。本篇文章我们把游戏场景中游戏对象的、旋转、缩放、平移与Prefab的名称导出在XML与JSON中。然后解析刚刚导出的XML或JSON通过脚本把导出的游戏场景还原。在Unity官网上下载随便下载一个demoProject,如下图所示这是我刚刚在官网上下载的一个范例程序。 接着将层次视图中的所有游戏对象都封装成Prefab保存在资源路径中,这里注意一下如果你的Prefab绑定的脚本中有publicObject的话,需要在代码中改一下。。用Find()FindTag()这类方法在脚本中Awake()方法中来拿,不然Pr
2、efab动态加载的时候无法赋值的,如下图所示,我把封装的Prefab对象都放在了Resources/Prefab文件夹下。 OK,现在我们就需要编写我们的导出工具、在Project视图中创建Editor文件夹,接着创建脚本MyEditor。如下图所示。 因为编辑的游戏场景数量比较多,导出的时候我们需要遍历所有的游戏场景,一个一个的读取场景信息。然后取得游戏场景中所有游戏对象的Prefab的名称旋转缩放平移。有关XML的使用请大家看我的上一篇文章: Unity3D研究院之使用C#合成解析XML与JSON(四十一) 代码中我只注释重点的部分,嘿嘿。 MyEditor.csC#1234567
3、8910111213141516171819202122232425262728293031usingUnityEngine;usingSystem.Collections;usingUnityEditor;usingSystem.Collections.Generic;usingSystem.Xml;usingSystem.IO;usingSystem.Text;usingLitJson;publicclassMyEditor:Editor{//将所有游戏场景导出为XML格式[MenuItem("GameObject/ExportXML")]staticvoidExportXML()
4、{ stringfilepath=Application.dataPath+@"/StreamingAssets/my.xml";if(!File.Exists(filepath)){File.Delete(filepath);}XmlDocumentxmlDoc=newXmlDocument();XmlElementroot=xmlDoc.CreateElement("gameObjects");//遍历所有的游戏场景foreach(UnityEditor.EditorBuildSettingsSceneSinUnityEditor.EditorBuildSettings.sc
5、enes) { //当关卡启用 if(S.enabled) { //得到关卡的名称 stringname=S.path; //打开这个关卡3233343536373839404142434445464748495051525354555657585960616263646566676869707172737475EditorApplication.OpenScene(name);XmlElementscenes=xmlDoc.Crea
6、teElement("scenes"); scenes.SetAttribute("name",name);foreach(GameObjectobjinObject.FindObjectsOfType(typeof(GameObject))){ if(obj.transform.parent==null) {XmlElementgameObject=xmlDoc.CreateElement("gameObjects");gameObject.SetAttribute("name",obj.name); gameObject.SetAttribute("ass
7、et",obj.name+".prefab");XmlElementtransform=xmlDoc.CreateElement("transform");XmlElementposition=xmlDoc.CreateElement("position");XmlElementposition_x=xmlDoc.CreateElement("x");position_x.InnerText=obj.transform.position.x+"
此文档下载收益归作者所有