Unity使用Mono.Xml代替System.Xml 测试

Posted 黑桃花

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Unity使用Mono.Xml代替System.Xml 测试相关的知识,希望对你有一定的参考价值。

测试环境


操作系统:Windows8.1

开发工具:Unity5.5.2


1、新建一个测试项目,观测引用System.Xml与Mono.Xml解析文件正确性,与打包后APK体积大小。

2、Mono.Xml 用例

using UnityEngine;
using Mono.Xml;
using System.Security;

public class MonoXmlTest : MonoBehaviour {

    
    void Start () {

        SecurityParser parser = new SecurityParser();

        string xmlPath = "test";

        parser.LoadXml(Resources.Load(xmlPath).ToString());

        SecurityElement element = parser.ToXml();
        
        foreach (SecurityElement node in element.Children)
        {         
            if (node.Tag == "table")
            {
                string wave = node.Attribute("wave");
                string level = node.Attribute("level");
                string name = node.Attribute("name");
                Debug.Log("wave:" + wave + " level:" + level + " name:" + name);
            }

        }
    }
    
}
  1. 结果正确: 
  2. 安装包大小: 
  3. 编译日志可以观测到没有引用System.Xml.dll(该文件约1mb)

    Mono dependencies included in the build
    Dependency assembly - Mono.Security.dll
    Dependency assembly - System.Core.dll
    Dependency assembly - System.dll
    Dependency assembly - mscorlib.dll
    Dependency assembly - UnityEngine.UI.dll
    Dependency assembly - UnityEngine.Networking.dll
    Dependency assembly - UnityEngine.PlaymodeTestsRunner.dll
    Dependency assembly - Assembly-CSharp.dll

 


 

3、System.xml用例

using UnityEngine;
using System.Xml;

public class SystemXmlTest : MonoBehaviour {

    // Use this for initialization
    void Start () {
     
            XmlDocument xml = new XmlDocument();
            XmlReaderSettings set = new XmlReaderSettings();            
            xml.LoadXml(Resources.Load("test").ToString());
            
            XmlNodeList nodes = xml.SelectSingleNode("ROOT").ChildNodes;
            
            foreach (XmlElement node in nodes)
            {
                string wave = node.GetAttribute("wave");
                string level = node.GetAttribute("level");
                string name = node.GetAttribute("name");

                Debug.Log("wave:" + wave + " level:" + level + " name:" + name);
        }

    }
    
}
  1. 结果正确:
  2. 安装包大小:
  3. 编译日志:可以观测到引用System.Xml.dll(该文件约1mb)  
    编译日志:可以观测到引用System.Xml.dll(该文件约1mb)
    
    Mono dependencies included in the build
    Dependency assembly - Mono.Security.dll
    Dependency assembly - System.Core.dll
    Dependency assembly - System.Xml.dll
    Dependency assembly - System.dll
    Dependency assembly - mscorlib.dll
    Dependency assembly - UnityEngine.UI.dll
    Dependency assembly - UnityEngine.Networking.dll
    Dependency assembly - UnityEngine.PlaymodeTestsRunner.dll
    Dependency assembly - Assembly-CSharp.dll

     


 4、结论:使用Mono.Xml代替System.Xml在APK安装包编译后,体积减小约400kb,建议使用Mono.Xml 

以上是关于Unity使用Mono.Xml代替System.Xml 测试的主要内容,如果未能解决你的问题,请参考以下文章

Unity文本截取长度,超出部分使用省略号代替

Unity文本截取长度,超出部分使用省略号代替

csharp Barrel Roll的脚本...解释如何使用Unity3d的Quaternion.Slerp(使用Coroutine代替)

Unity运用GPU代替CPU处理和计算简单测试

既然Unity3D可以开发ios和android,那它可不可以代替ios和android?

unity3d在android安卓中用啥代替pc上的OnMouseDown函数