首页 > 其他分享 >Unity读取xml文件

Unity读取xml文件

时间:2024-07-08 11:42:18浏览次数:15  
标签:xml Log 读取 ParseXml Unity key 字典 string

在XML中配置字典名称,字典的key和value,目前key和value都是用的string类型,通过ParseXml类的ParseData函数,传递字典名称和key来获取value

xml文件内容

解析数据类

using UnityEngine;
using System.Xml;
using System;

/// <summary>
/// 读取xml信息类
/// </summary>
public class ParseXml
{
    private string xmlPath = "Assets/Configs/FormInfo.xml";

    /// <summary>
    /// 解析数据
    /// </summary>
    /// <param name="dictionary">要解析的字典</param>
    /// <param name="key">键</param>
    /// <returns></returns>
    public string ParseData(string dictionary, string key)
    {
        try
        {
            XmlDocument xmlDocument = new XmlDocument();
            //加载配置文件
            xmlDocument.Load(xmlPath);
            XmlNode xmlRoot = xmlDocument.SelectSingleNode("Body");
            //加载字典列表
            XmlNodeList xmlDictionaryList = xmlRoot.ChildNodes;
            //遍历字典列表
            for(int i = 0; i < xmlDictionaryList.Count; i++)
            {
                XmlNode xmlDictionary = xmlDictionaryList.Item(i);

                if(xmlDictionary.Name != dictionary)
                {
                    continue;
                }

                //加载字典项
                XmlNodeList xmlRootLists = xmlDictionary.ChildNodes;
                //遍历字典项
                for(int j = 0; j < xmlRootLists.Count; j++)
                {
                    XmlNode rootNode = xmlRootLists.Item(j);
                    //获取字典项
                    string k = rootNode.Attributes.GetNamedItem("Key").Value;
                    string v = rootNode.Attributes.GetNamedItem("Value").Value;


                    if (key == k)
                    {
                        return v;
                    }
                }
            }
        }
        catch(Exception e)
        {
            Debug.Log(e);
            return null;
        }

        Debug.Log("NotFound");
        return null;
    }
}

调用例子

using UnityEngine;

public class GetXml : MonoBehaviour
{
    ParseXml parseXml = new ParseXml();
    void Update()
    {
        if (Input.GetKeyDown(KeyCode.Q))
        {
            Debug.Log(parseXml.ParseData("Dialogs", "1"));
        }

        if (Input.GetKeyDown(KeyCode.W))
        {
            Debug.Log(parseXml.ParseData("Tips", "1"));
        }

    }
}

标签:xml,Log,读取,ParseXml,Unity,key,字典,string
From: https://www.cnblogs.com/su-make/p/17848135.html

相关文章

  • Unity入门之重要组件和API(3) : Transform
    前言Transform类主要处理游戏对象(GameObject)的位移、旋转、缩放、父子关系和坐标转换。1.位置和位移1.1必备知识点:Vector3Vector3主要用来表示三维坐标系中的一个点或者一个向量。【声明】Vector3v1=newVector3();Vector3v2=newVector3(10,10);Vector3v3......
  • Android 集成 Unity上的坑
    转载自CSDN1.Unity版本的差异Unity的版本在2019及其以下选择Mono方式打包出Android项目,反之选择IL2CPP方式打包Android项目为什么我会说这个Unity版本上会存在差异呢?因为我在工作时发现,我们项目原本是要升级到2022最新版的,但是发现2022用Mono方式打包出来的Android项目运行到An......
  • [oeasy]python024_vim读取文件_从头复制到尾_撤销_重做_reg_寄存器
    Guido的简历......
  • python 调用 bat,传入参数,bat中实现如果有参数传入则读取参数,没有的话就使用内部的变量
    以下是一个Python调用BAT脚本并向其传递参数的示例,同时BAT脚本中会判断是否有参数传入并进行相应处理:Python代码:pythonimportsubprocess#定义要传递的参数parameter="example_parameter"#调用BAT脚本并传递参数subprocess.run(["your_bat_script.b......
  • unity编辑器拓展,查找项目中预制体引用的组件或者脚本
    `usingSystem.Collections;usingSystem.Collections.Generic;usingUnityEngine;usingUnityEditor;usingUnityEngine.UI;usingSystem.Reflection;usingSystem;publicclassSearchComponent:EditorWindow{privatestringcomponentName="UnityEngine.......
  • Unity编辑器扩展之Inspector面板扩展
    内容将会持续更新,有错误的地方欢迎指正,谢谢! Unity编辑器扩展之Inspector面板扩展   TechX坚持将创新的科技带给世界!拥有更好的学习体验——不断努力,不断进步,不断探索TechX——心探索、心进取!助力快速掌握Inspector编辑器扩展为......
  • ETAS工具导入Com Arxml修改步骤
    文章目录前言Confgen之前的更改Confgen之后的修改CANCanIfComComMEcuM修改CanNmCanSMDCMCanTp生成RTE过程报错修改DEXT-诊断文件修改Extract问题总结前言通讯协议栈开发一般通过导入DBC实现,ETAS工具本身导入DBC也是生成arxml后执行cfgg......
  • 陪玩app源码,加密算法中密钥生成和读取一览
    陪玩app源码,加密算法中密钥生成和读取一览密钥生成与读取密码学随机数密码学随机数算法在安全场景中使用广泛,如:生成对称密钥、盐、iv等,因此相比普通的随机数算法(如线性同余),它需要更高强度的不可预测性,在Java中,使用SecureRandom来生成更安全的随机数,如下:publicclass......
  • Unity Shader技巧:实现带投影机效果,有效避免边缘拉伸问题
    这个是原始的projector投影组件,边缘会有拉伸经过修改shader后边缘就没有拉伸了(实现代码在文章最后)这个着色器通过检查每个像素的UV坐标是否在定义的边界内,来确定是否应用黑色边框。如果UV坐标处于边缘区域,那么像素颜色会被强制设为黑色,从而在投影图像周围形成一个黑色......
  • 初识XML
    一.XML概述    XML,ExtensibleMarkupLanguage,扩展性标识语言     具体作用为:(1)可作为一种简单的数据库,存储并检索数据;(2)传输约定格式的文件;(3)做软件的配置文件。【配置文件:保存软件设置的文件】  HTML和XML的区别:HTML标签不能自定......