欢迎来到天天文库
浏览记录
ID:39891023
大小:78.50 KB
页数:10页
时间:2019-07-14
《Unity3D技术之导出游戏场景详解》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、Unity3D技术之导出游戏场景详解欢迎来到unity学习、unity培训、unity企业培训教育专区,这里有很多U3D资源、U3D培训视频、U3D教程、U3D常见问题、U3D项目源码,我们致力于打造业内unity3d培训、学习第一品牌。此时我们就可以导出游戏场景的信息拉,注意游戏场景的需要现在ProjectSetting中注册。点击GameObject–>Export XML和GameObject–>ExportJson菜单项即可开始生成。(文章出自狗刨学习网) 如下图所示,场景导出完毕后,会将xml与Json文件保存在StreamingAssets
2、路径下,放在这里的原因是方便移动平台移植,因为它们属于二进制文件,移动平台在读取二进制文件的路径是不一样的。一定要放在这里喔。 接着,我继续创建两个游戏场景,一个用来解析XML的场景,一个用来解析JSON的场景。 XML场景中,创建一个空的游戏对象,把XML.cs挂上去。C#123456789usingUnityEngine;usingSystem.Collections;usingSystem.Xml;usingSystem.IO;publicclassXML:MonoBehaviour{ //UsethisforinitializationvoidS
3、tart(){1011121314151617181920212223242526272829303132 //电脑和iphong上的路径是不一样的,这里用标签判断一下。#ifUNITY_EDITORstringfilepath=Application.dataPath+"/StreamingAssets"+"/my.xml";#elifUNITY_IPHONE stringfilepath=Application.dataPath+"/Raw"+"/my.xml";#endif //如果文件存在话开始解析。if(File.Exists(
4、filepath)){XmlDocumentxmlDoc=newXmlDocument();xmlDoc.Load(filepath);XmlNodeListnodeList=xmlDoc.SelectSingleNode("gameObjects").ChildNodes;foreach(XmlElementscene innodeList){//因为我的XML是把所有游戏对象全部导出,所以这里判断一下只解析需要的场景中的游戏对象//JSON和它的原理类似if(!scene.GetAttribute("name").Equals("Assets/St
5、arTrooper.unity")){continue;}3334353637383940414243444546474849505152535455 foreach(XmlElementgameObjectsinscene.ChildNodes){ stringasset="Prefab/"+gameObjects.GetAttribute("name");Vector3pos=Vector3.zero;Vector3rot=Vector3.zero;Vector3sca=Vector3.zero;foreach(XmlElementtransform
6、ingameObjects.ChildNodes){foreach(XmlElementprsintransform.ChildNodes){if(prs.Name=="position"){foreach(XmlElementpositioninprs.ChildNodes){switch(position.Name){case"x":pos.x=float.Parse(position.InnerText);break;case"y":pos.y=float.Parse(position.InnerText);56575859606162636465
7、66676869707172737475767778break;case"z":pos.z=float.Parse(position.InnerText);break;}}}elseif(prs.Name=="rotation"){foreach(XmlElementrotationinprs.ChildNodes){switch(rotation.Name){case"x":rot.x=float.Parse(rotation.InnerText);break;case"y":rot.y=float.Parse(rotation.InnerText);
8、break;case"z":rot.z=float.Parse(rotation
此文档下载收益归作者所有