Unity3d读取XML文档

  1. 之前看过很多人总结的unity3d读取XML,各式各样的都有,今天心血来潮,自己也总结一篇供大家参考,如有不当,欢迎大家留言讨论,废话不多说了,进入正题,先上个效果图吧

  1. 编写xnl文档,为了方便各种数据直接转化显示,我特意凑了5种不同的数据类型供大家参考
  2. 新建空物体LoadXml,编写LoadingXML脚本,进行读取文件

以下就是读取的全过程,对需要调取的数据进行封装,并提供get,set方法方便外界调用

using System.Collections;

using System.Collections.Generic;

using UnityEngine;

using System.IO;

using System.Xml;

 

public class LoadingXML : MonoBehaviour

{

    public static LoadingXML instance;

    private string xmlfilePath;

 

    private int id;

    private string name;

    private byte age;

    private char sex;

    private float grade;

 

    public int Id { get => id; set => id = value; }

    public string Name { get => name; set => name = value; }

    public byte Age { get => age; set => age = value; }

    public char Sex { get => sex; set => sex = value; }

    public float Grade { get => grade; set => grade = value; }

 

    void Awake()

    {

        instance = this;

        //声明xml文件的路径

        xmlfilePath = Application.streamingAssetsPath + "/database.xml";

        if (File.Exists(xmlfilePath))

        {

            XmlDocument xmlDoc = new XmlDocument();

            xmlDoc.Load(xmlfilePath);

            //得到根节点

            XmlNode xn = xmlDoc.SelectSingleNode("students");

 

            //得到根节点的所有子节点

            XmlNodeList xnl = xn.ChildNodes;

 

            // 将节点转换为元素,便于得到节点的属性值

            foreach (XmlNode xn1 in xnl)

            {

                // 将节点转换为元素,便于得到节点的属性值

                XmlElement xe = (XmlElement)xn1;

                //将读取的数据转化为int

                Id = int.Parse(xe.GetAttribute("Id"));

                Name = xe.GetAttribute("Name").ToString();

                //得到book节点的子节点

                XmlNodeList xnIO = xe.ChildNodes;

                //将读取的数据转化为byte

                Age = byte.Parse(xnIO.Item(0).InnerText);

                //将读取的数据转化为char

                Sex = char.Parse(xnIO.Item(1).InnerText);

                //将读取的数据转化为float

                Grade = float.Parse(xnIO.Item(2).InnerText);

 

            }

        }

        else {

            Debug.Log("weifaxian");

        }

    }

5.在unity3d建立5个text用于显示文本,如下:

6.新建空物体ManagerUI,并编写脚本LoadUIData,下面直接上脚本

using System.Collections;

using System.Collections.Generic;

using UnityEngine;

using UnityEngine.UI;

 

public class LoadUIData : MonoBehaviour

{

    private Text Tx_01;

    private Text Tx_02;

    private Text Tx_03;

    private Text Tx_04;

    private Text Tx_05;

    // Start is called before the first frame update

    void Start()

    {

        Tx_01 = GameObject.Find("Canvas/Tx_01").GetComponent<Text>();

        Tx_02 = GameObject.Find("Canvas/Tx_02").GetComponent<Text>();

        Tx_03 = GameObject.Find("Canvas/Tx_03").GetComponent<Text>();

        Tx_04 = GameObject.Find("Canvas/Tx_04").GetComponent<Text>();

        Tx_05 = GameObject.Find("Canvas/Tx_05").GetComponent<Text>();

        LoadData();

    }

    void LoadData()

    {

        //int转化为string

        Tx_01.text = (LoadingXML.instance.Id).ToString();

        Tx_02.text = LoadingXML.instance.Name;

        //byte转化为string

        Tx_03.text = (LoadingXML.instance.Age).ToString();

        //char转化为string

        Tx_04.text = (LoadingXML.instance.Sex).ToString();

        //float转化为string

        Tx_05.text = (LoadingXML.instance.Grade).ToString();

}

7.运行即可看到效果

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值