unity3d读取xml有好几种方式,最简单是直接利用System.Xml读取xml,但是项目打包会比较大,增加了1M的资源占用。另外两个是利用其他轻量级xml库来实现,如Mono.Xml、XMLParser。Mono.Xml是c#写的,XMLParser是js写的。文章主要说明Mono.Xml的用法。
为什么不建议使用System.Xml,unity的解释如下:
When building a player (Desktop, Android or iOS) it is important to not depend on System.dll or System.Xml.dll. Unity does not include System.dll or System.Xml.dll in the players installation. That means, if you want to use Xml or some Generic containers which live in System.dll then the required dlls will be included in the players. This usually adds 1mb to the download size, obviously this is not very good for the distribution of your players and you should really avoid it. If you need to parse some Xml files, you can use a smaller xml library like this one Mono.Xml.zip. While most Generic containers are contained in mscorlib, Stack<> and few others are in System.dll. So you really want to avoid those.
首先,定义一个xml文件,如下:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ROOT>
<table wave="1" level="1" name="John"/>
<table wave="2" level="1" name="Lucy"/>
</ROOT>
把Mono.Xml加进unity3d项目。下载地址:http://download.csdn.net/detail/cwqcwk1/7105071
unity3d利用Mono.xml读取xml的代码如下:
using UnityEngine;
using System.Collections;
using Mono.Xml;
using System.IO;
using System.Security;
public class XmlLorder {
public void Read()
{
SecurityParser SP = new SecurityParser();
// 假设xml文件路径为 Resources/test.xml
string xmlPath = "test";
SP.LoadXml(Resources.Load( xmlPath ).ToString());
SecurityElement SE = SP.ToXml();
foreach (SecurityElement child in SE.Children)
{
//比对下是否使自己所需要得节点
if(child.Tag == "table")
{
//获得节点得属性
string wave = child.Attribute("wave");
string level = child.Attribute("level");
string name = child.Attribute("name");
Debug.Log("wave:" + wave + " level:" + level + " name:" + name);
}
}
}
}
顺带提一下unity3d使用XMLParser读取xml:
XMLParser xmlparse = new XMLParser();
XMLNode node = xmlparse.Parse(xmldata.text);
XMLNodeList list = node.GetNodeList("ROOT>0>table");
for (int i = 0; i < list.Count; i++)
{
string wave = node.GetValue("ROOT>0>table>" + i + ">@wave");
string level = node.GetValue("ROOT>0>table>" + i + ">@level");
string wait = node.GetValue("ROOT>0>table>" + i + ">@wait");
}
XMLParser下载地址:http://download.csdn.net/detail/cwqcwk1/7104625
参考:
http://blog.csdn.net/mycwq/article/details/19813779
http://docs.unity3d.com/Documentation/Manual/ReducingFilesize.html
分享到:
相关推荐
Unity3D是一款强大的跨...总之,掌握Mono.Xml和XmlParser的使用对于在Unity3D中处理XML至关重要。了解这两种方法的不同特性和适用场景,可以帮助开发者更高效、更节省资源地处理XML数据,从而提升项目性能和用户体验。
本篇将详细介绍Unity3D中使用Mono.Xml库来读取XML文件的相关知识点。 首先,Mono.Xml是Mono.NET框架的一部分,它提供了一套用于解析和操作XML文档的类库。在Unity3D中,由于其内置了.NET框架的基础支持,我们可以...
在Unity3D中,Mono工具提供了一套API,使开发者能够轻松地读取和解析XML文件,以便在游戏中使用这些数据。 Mono是一个.NET框架的实现,它为C#、VB.NET等语言提供了运行时环境。在Unity3D中,Mono是游戏脚本的基础,...
注意,由于Unity的 mono 运行时环境限制,可能需要对EPPlus或其他库进行一些调整,确保它们与Unity兼容。 综上所述,Unity中的Excel文件读写主要依赖于第三方库,如EPPlus,通过C#的静态方法进行操作。这使得在不...
2. **解析AndroidManifest.xml**:通过`System.Xml.Linq.XDocument`类加载XML文件,然后可以遍历XML节点,获取应用的包名、版本信息、所需权限等。 3. **处理classes.dex**:为了读取DEX文件,可能需要第三方库,如...
标题 "Il2CppDumper-v5.0.0.zip_Animation_magnetz4u_tween" 暗示我们正在处理一个与逆向工程和游戏动画相关的工具,具体来说是Il2CppDumper的一个版本,这是一款用于分析和理解Il2Cpp(Unity引擎使用的编译后格式)...
7. `ICSharpCode.NRefactory.CSharp.xml` 和 `ICSharpCode.AvalonEdit.xml`:这些是XML文档,可能包含了关于NRefactory C#解析器和AvalonEdit的相关文档和元数据。 总的来说,ILSpy作为一个强大的.NET反编译和调试...
例如,你可以使用`Mono.Cecil`库来读取二进制文件的签名,或者通过`Process.Start`调用`codesign`命令: ```csharp using System.Diagnostics; // 调用codesign命令 ProcessStartInfo psi = new ...
在IT行业中,跨平台开发是常见的需求之一,而Mono for Android正是这样的解决方案,它允许开发者使用C#语言来构建Android应用程序。本篇文章将深入探讨如何在Mono for Android项目中调用WebServer服务,以实现客户端...
- 对于`AndroidManifest.xml`,可以使用XML解析库(如`System.Xml.Linq.XDocument`)来解析其内容,获取应用的权限、活动、服务等信息。 - `classes.dex`文件需要使用dex解析器将其转换为可读的字节码或反编译为...
- Unity的脚本语言基于Mono的.NET平台运行,支持.NET库,为开发者提供了处理XML、数据库、正则表达式等功能的强大工具。 2. **脚本语言对比**: - JavaScript:尽管名为JavaScript,但其实与Web开发中常用的...
例如,读取外部存储(SD卡)的权限需要在AndroidManifest.xml中声明`<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />`。 6. **UI设计**:使用C#和Mono开发Android应用时,可以利用...
在Unity中使用NPOI可能需要一些额外的设置,例如使用IL2CPP或Mono运行时,并确保库与Unity版本兼容。 总的来说,NPOI是一个功能丰富的库,能够帮助开发者在C#环境中高效地处理Excel和Word文件,为各种应用提供便利...
7. **pdb支持**:Mono.Cecil.Pdb.dll组件允许ILSpy读取和显示调试信息,包括行号、源文件映射等,这对于调试和问题定位非常有帮助。 8. **树形视图**:ICSharpCode.TreeView.dll提供了程序集的层次结构视图,使用户...
10. **PDB支持**:Mono.Cecil.Pdb.dll使得ILSpy能够读取和解析程序集的调试信息,这在还原源代码的行号和调试信息时至关重要。 通过这些特性,ILSpy为开发者提供了一个强大且易用的工具,用于理解和调试.NET程序,...
ILSpy利用Mono.Cecil来读取和操作程序集的元数据,为反编译过程提供基础。 5. **ILSpy.BamlDecompiler.Plugin.dll**:这个插件允许ILSpy解析WPF应用中的BAML(Binary XML)文件,进一步展示UI元素和资源的细节。 6...
7. **Mono.Cecil.dll**:Mono.Cecil是由Jb Evain开发的一个.NET框架,用于读取、修改和写入.NET程序集。ILSpy利用Mono.Cecil来解析.NET的元数据和IL代码。 8. **ILSpy.Debugger.Plugin.dll** 和 **ILSpy....
8. **Mono.Cecil库**:这个库是ILSpy的重要组成部分,它提供了一种强大的方式来读取、修改和写入.NET程序集。Mono.Cecil.dll使得ILSpy可以深入到.NET程序集的底层细节。 9. **TomsToolbox.Wpf.dll**:TomsToolbox是...
XML是一种通用的数据交换格式,Unity中的XML解析库可以帮助开发者读取和写入XML文件,用于配置文件、游戏数据或其他需要序列化的信息。 综上所述,Unity的简易框架整合了多种实用工具和设计模式,旨在简化开发过程...