查看: 2441|回复: 2
打印 上一主题 下一主题

[脚本]Unity操作XML例子,比官方WIKI的简单

[复制链接]
.    

3797

主题

11

听众

5万

积分

首席设计师

Rank: 8Rank: 8

纳金币
32328
精华
41

活跃会员 优秀版主 荣誉管理 论坛元老

跳转到指定楼层
楼主
发表于 2012-10-25 14:29:20 |只看该作者 |倒序浏览
在百度找了3页unity使用XML的相关资料,清一色全是官方的例子,比较繁琐。。于是就使用C#调用XML的方法尝试了一下。
这是第一个例程,测试创建一个简单的XML文件。使用时先调用xmlInit()方法初始化,然后调用writeTest()写入。
刚刚测试了一下。好像Build了之后,创建不出xml文件。。目前正在试


复制代码

1.using UnityEngine;

2.using System.Collections;

3.using System.IO;

4.using System.Xml;

5.

6.public class XmlTest : MonoBehaviour

7.{

8.        private string fileName = @"/config.xml";

9.

10.        private string path = "";

11.

12.        private XmlDocument xd = new XmlDocument();

13.        private XmlElement rootEle;

14.

15.        public void xmlInit()

16.        {

17.            path = System.IO.Directory.GetCurrentDirectory() + fileName;

18.

19.            rootEle = xd.CreateElement("root");

20.            XmlDeclaration xdc = xd.CreateXmlDeclaration("1.0", "GBK", null);//这里是设置XML的版本号,不是自己游戏的版本号

21.

22.            xd.AppendChild(xdc);

23.        }

24.

25.

26.        public void writeTest()

27.        {

28.            XmlElement ele = xd.CreateElement("firstXml");

29.

30.            ele.InnerText = "hi";

31.            rootEle.AppendChild(ele);

32.            xd.AppendChild(rootEle);

33.            xd.Save(path);

34.        }

35.}


第二个例程。一个具有读写功能的XML类。用于设置游戏玩家的属性配置文件。并把XmlElement变为结构体。调用更方便。

同样,测试使用时先调用xmlInit(),再调用writeTest()或readTest().
复制代码

1.using UnityEngine;

2.using System.Collections;

3.using System.IO;

4.using System.Xml;

5.

6.public class XmlTest : MonoBehaviour

7.{

8.    private string fileName = @"/config.xml";

9.   

10.    private string path = "";

11.   

12.    private XmlDocument xd = new XmlDocument();

13.    private XmlElement rootEle;

14.

15.   

16.    public void xmlInit()

17.    {

18.        path = Directory.GetCurrentDirectory() + fileName;

19.   

20.        rootEle = xd.CreateElement("root");

21.        XmlDeclaration xdc = xd.CreateXmlDeclaration("1.0", "GBK", null);//这里是设置XML的版本号,不是自己游戏的版本号

22.   

23.        xd.AppendChild(xdc);

24.    }

25.   

26.   

27.    public void writeTest()

28.    {

29.        string[] players = new string[]{"player1", "player2", "player3"};

30.        string[] hps = new string[]{"100","200","150"};

31.        string[] mps = new string[]{"110","62","94"};

32.        for(int i=0;i <players.Length; i++)

33.        {

34.            XmlElement info = xd.CreateElement("info");

35.            info.SetAttribute("name",players);

36.            Sct_XmlEles xes = new Sct_XmlEles();

37.            

38.            xes.hp = xd.CreateElement("hp");

39.            xes.hp.InnerText = hps;

40.            xes.mp = xd.CreateElement("mp");

41.            xes.mp.InnerText = mps;

42.            

43.            info.AppendChild(xes.hp);

44.            info.AppendChild(xes.mp);

45.            rootEle.AppendChild(info);

46.        }

47.        xd.AppendChild(rootEle);

48.        xd.Save(path);

49.    }

50.   

51.    public void readTest()

52.    {

53.        string tmpStr = "";

54.        xd.Load(path);

55.        

56.        foreach (XmlNode node1 in xd.ChildNodes)

57.        {

58.            foreach (XmlNode node2 in node1.ChildNodes)

59.            {

60.                foreach (XmlNode node3 in node2.ChildNodes)

61.                {

62.                    print (node2.Attributes[0].Name+"  -----  "+node2.Attributes[0].Value);

63.                    switch(node3.Name)

64.                    {

65.                        case "hp":

66.                            print ("hp   "+node3.InnerText);

67.                        break;

68.                        

69.                        case "mp":

70.                            print ("mp   "+node3.InnerText);

71.                        break;

72.                    }

73.                }

74.            }

75.        }

76.    }

77.}

78.

79.public s***ct Sct_XmlEles

80.{

81.    public XmlElement hp;

82.    public XmlElement mp;

83.}


更多精彩内容,尽在web3D纳金网http://www.narkii.com/club/

【来源:unity圣典】
分享到: QQ好友和群QQ好友和群 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
转播转播0 分享淘帖0 收藏收藏0 支持支持0 反对反对0
回复

使用道具 举报

955

主题

164

听众

7万

积分

版主

Rank: 7Rank: 7Rank: 7

纳金币
59338
精华
28

活跃会员 荣誉管理 突出贡献 优秀版主 论坛元老

沙发
发表于 2012-10-25 17:04:19 |只看该作者
感谢分享!
回复

使用道具 举报

.    

3797

主题

11

听众

5万

积分

首席设计师

Rank: 8Rank: 8

纳金币
32328
精华
41

活跃会员 优秀版主 荣誉管理 论坛元老

板凳
发表于 2012-10-25 21:00:31 |只看该作者
顶起
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

手机版|纳金网 ( 闽ICP备2021016425号-2/3

GMT+8, 2024-11-24 09:39 , Processed in 0.165193 second(s), 33 queries .

Powered by Discuz!-创意设计 X2.5

© 2008-2019 Narkii Inc.

回顶部