Unity快捷读取XML、JSON文件
来源:互联网 发布:网络蜘蛛磁力链 编辑:程序博客网 时间:2024/05/17 17:54
看了网上各种读取教程,挺厉害的。但不如我这个封装好的方便,现在我来记录下用法。
首先,下载我这个GameUtils.dll文件,http://download.csdn.net/download/qq_17758883/10018728
把文件复制到Unity工程的Assets目录下的任意文件夹里,Unity会自动编译这个文件。
然后就是脚本了,我来举一个简单的例子。现在我要创建一个任务系统,任务通过读取XML显示在游戏中,那么我们先来看下任务XML文件:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?><ArrayOfTask1 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <Task1> <taskID>0</taskID> <content>制作一杯草莓汁</content> <isFinished>false</isFinished> </Task1> <Task1> <taskID>1</taskID> <content>制作一杯橙汁</content> <isFinished>false</isFinished> </Task1> <Task1> <taskID>2</taskID> <content>制作一杯芒果汁</content> <isFinished>false</isFinished> </Task1> <Task1> <taskID>3</taskID> <content>制作一杯猕猴桃汁</content> <isFinished>false</isFinished> </Task1> <Task1> <taskID>4</taskID> <content>制作一杯西瓜汁</content> <isFinished>false</isFinished> </Task1> <Task1> <taskID>5</taskID> <content>制作一杯蓝莓汁</content> <isFinished>false</isFinished> </Task1> </ArrayOfTask1>
需要注意的一点是:XML的根标签是ArrayOfTask1,你在使用时注意改成ArrayOf+自己的类名。比如ArrayOfFood、ArrayOfRole等。
再来新建一个Task1类:
using System;using UnityEngine;using System.Collections;[Serializable]public class Task1{ public int taskID; public string content; public bool isFinished;
//请忽略这个构造方法 //public Task1(int id, string content) //{ // taskID = id; // this.content = content; // isFinished = false; //}}
接着读取XML的脚本了,很简单,而且能返回一个泛型的List,及其方便我们使用。
using UnityEngine;using System.Collections;using System.Collections.Generic;using UnityGameAssist;public class TaskManager1 : MonoSingletion<TaskManager1>{ /// <summary> /// 存放当前要执行的任务 /// </summary> public List<Task1> tasks=new List<Task1>(); /// <summary> /// 存放所有任务 /// </summary> public List<Task1> allTask=new List<Task1>(); /// <summary> /// 发布任务 /// </summary> public void PublishTask(string type, int taskNum) { if (type.Equals("fruit")) { //读取水果任务 FileUtils.ReadXml<List<Task1>>("Task", ref allTask, null); } else { //读取做菜任务 FileUtils.ReadXml<List<Task1>>("FoodTask", ref allTask, null); } for (int i = 0; i < taskNum; i++) { int temp = Random.Range(0, allTask.Count); //判断是否包含重复元素,若包含,则i--(有风险,可能会导致生成的实际任务数量,比设定的要多) if (tasks.Contains(allTask[temp])) { if (i >= 0) i--; continue; } tasks.Add(allTask[temp]); } }
注意看命名空间,要引用UnityGameAssist,然后直接调用FileUtils.ReadXml,第一个参数是你的XML文件名,放在Resources/data/目录下,千万不能放错,不然读取不到。
第二个参数是你的List,第三个参数设为空即可。
Json的读取方式和这个差不多,只不过函数变成了FileUtils.ReadJson,这里就不赘述了。
或者可以看我的另一篇博客,使用Unity原生API读取Json文件,性能更好。
阅读全文
0 0
- Unity快捷读取XML、JSON文件
- Unity -- Json文件读取
- unity读取Json文件
- Unity 读取xml 文件
- Unity 读取xml 文件
- Unity 读取XML文件
- unity中读取xml文件
- Unity 中读取XML文件
- Unity的Json解析--读取Json文件
- 【Unity&XML】读取XML文件内容
- Unity中JSON文件的读取
- 读取xml文件和json文件
- 读取xml文件转换为json文件
- unity Android 打包后读取 xml 文件
- unity对Xml文件进行读取
- Unity的Json解析<一>--读取Json文件
- Unity的Json解析<一>--读取Json文件
- 【转载】Unity的Json解析<一>--读取Json文件
- Linux--Shell脚本
- Codeforces Round #427 (Div. 2)C. Star sky
- Unity3d的AssetBundle打包——AssetBundle Browser(简单实现资源复用)
- 数组
- SpringMVC札集(08)——文件上传
- Unity快捷读取XML、JSON文件
- HDU
- JAVA设计模式之单利模式
- 没有被遣返的人生是不完整的
- C
- Dynamic log fileNames with log4net
- JavaDay02变量常量
- 论文写作词汇积累-不断更新中
- 求最大公约数和最小公倍数