unity3D技术之导出Unity场景的所有游戏对象信息.docx
上传人:qw****27 上传时间:2024-09-11 格式:DOCX 页数:12 大小:218KB 金币:15 举报 版权申诉
预览加载中,请您耐心等待几秒...

unity3D技术之导出Unity场景的所有游戏对象信息.docx

unity3D技术之导出Unity场景的所有游戏对象信息.docx

预览

免费试读已结束,剩余 2 页请下载文档后查看

15 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

导出Unity场景的所有游戏对象信息,一种是XML一种是JSON。本篇文章我们把游戏场景中游戏对象的、旋转、缩放、平移与Prefab的名称导出在XML与JSON中。然后解析刚刚导出的XML或JSON通过脚本把导出的游戏场景还原。在Unity官网上下载随便下载一个demoProject,如下图所示这是我刚刚在官网上下载的一个范例程序。接着将层次视图中的所有游戏对象都封装成Prefab保存在资源路径中,这里注意一下如果你的Prefab绑定的脚本中有publicObject的话,需要在代码中改一下。。用Find()FindTag()这类方法在脚本中Awake()方法中来拿,不然Prefab动态加载的时候无法赋值的,如下图所示,我把封装的Prefab对象都放在了Resources/Prefab文件夹下。OK,现在我们就需要编写我们的导出工具、在Project视图中创建Editor文件夹,接着创建脚本MyEditor。如下图所示。因为编辑的游戏场景数量比较多,导出的时候我们需要遍历所有的游戏场景,一个一个的读取场景信息。然后取得游戏场景中所有游戏对象的Prefab的名称旋转缩放平移。有关XML的使用请大家看我的上一篇文章:HYPERLINK"http://www.xuanyusong.com/archives/1901"\o"PermanentLinktoUnity3D研究院之使用C#合成解析XML与JSON(四十一)"Unity3D研究院之使用C#合成解析XML与JSON(四十一)代码中我只注释重点的部分,嘿嘿。MyEditor.csC#123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190usingUnityEngine;usingSystem.Collections;usingUnityEditor;usingSystem.Collections.Generic;usingSystem.Xml;usingSystem.IO;usingSystem.Text;usingLitJson;publicclassMyEditor:Editor{//将所有游戏场景导出为XML格式[MenuItem("GameObject/ExportXML")]staticvoidExportXML(){stringfilepath=Application.dataPath+@"/StreamingAssets/my.xml";if(!File.Exists(filepath)){File.Delete(filepath);}XmlDocumentxmlDoc=newXmlDocument();XmlElementroot=xmlDoc.CreateElement("gameObjects");//遍历所有的游戏场景foreach(UnityEditor.EditorBuildSettingsSceneSinUnityEditor.EditorBuildSettings.scenes){//当关卡启用if(S.enabled){//得到关卡的名称stringname=S.path;//打开这个关卡EditorApplication.OpenS