1、首先是看看效果图:

開始执行项目例如以下图所看到的

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd2NsdW9qaWpp/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

2、点击绿色button改动配置文件再点击改动button成功改动方块颜色

3、接了下是实现的过程:

首先在Hierarchy创建一个cube。其次在Assets下分别创建Scenes和Scripts目录,各自是用来保存的的当前的场景和我们所写的脚本。在Scripts目录以下右键创建一个C#脚本,接我们在脚本里面開始创建一个XML文件和相应的目录。在外部声明一个private string m_sXmlPath;用来显示xml路径。接着在Start()方法中配置和创建XML,

void Start () {

m_sXmlPath = Application.dataPath + "/Configs/config.xml";

Debug.Log("Application Path:" + Application.dataPath);

Debug.Log("config.xml Path:" + m_sXmlPath);

CreateXml();//创建XML

}

创建XML方法例如以下:

private void CreateXml(){

if(!File.Exists(m_sXmlPath))//假设不存在这个文件夹我们就创建一个这种文件夹

{

XmlDocument xmlDoc = new XmlDocument();

XmlElement data = xmlDoc.CreateElement("data");

xmlDoc.AppendChild(data);

XmlElement color = xmlDoc.CreateElement("color");

data.AppendChild(color);

xmlDoc.Save(m_sXmlPath);

Debug.Log("创建XML完成");

}

}

创建形成之后我们点击XML会有例如以下的信息在里面:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd2NsdW9qaWpp/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

相应的我们须要更新我们改动的XML文件:

private void UpdateXML(uint color){

if(File.Exists(m_sXmlPath))

{

XmlDocument xmlDoc = new XmlDocument();

xmlDoc.Load(m_sXmlPath);

XmlNode colorNode = xmlDoc.SelectSingleNode("data/color");

colorNode.InnerText = color.ToString();

xmlDoc.Save(m_sXmlPath);

Debug.Log("改动成功:" + color);

}

}

接着就是实现方块的颜色的改动:

private void ModifyCubeColor(){

if(File.Exists(m_sXmlPath)){

XmlDocument xmlDoc = new XmlDocument();

xmlDoc.Load(m_sXmlPath);

XmlNode colorNode = xmlDoc.SelectSingleNode("data/color");

uint color = Convert.ToUInt32(colorNode.InnerText);

Debug.Log("读取的Color:" + color);





GameObject cube = GameObject.Find("Cube");

if(color == 0xff0000){

cube.renderer.material.color = Color.red;

}else if(color == 0x00ff00){

cube.renderer.material.color = Color.green;

}

}

}

我们要实现如效果图中的点击button就会改动相应的方块,我们须要创建我们的button:

void OnGUI(){

//create modify color buttons

GUI.Label(new Rect(10,10,200,30),"改动配置文件");

if(GUI.Button(new Rect(10,40,100,30),"红色")){

UpdateXML(0xff0000);

}

if(GUI.Button(new Rect(10,70,100,30),"绿色")){

UpdateXML(0x00ff00);

}





//create button  use to modify Cube'color

GUI.Label(new Rect(10,110,200,30),"依据配置文件改动方块");

if(GUI.Button(new Rect(10,140,200,30),"改动方块")){

ModifyCubeColor();

}



}

Unity3D 使用XML进行简单的配置文件改动的更多相关文章

  1. unity3d和php后台简单交互--一

    unity3d开发时,用PHP作为后台是个不错的选择.对一些数据吞吐量不是很大的游戏,比如某个游戏的排名,登录等等,一般的php程序能够胜任了,并且php语言简单,开发容易对数据库尤其是mysql的支 ...

  2. Python之xml文档及配置文件处理(ElementTree模块、ConfigParser模块)

    本节内容 前言 XML处理模块 ConfigParser/configparser模块 总结 一.前言 我们在<中我们描述了Python数据持久化的大体概念和基本处理方式,通过这些知识点我们已经 ...

  3. 【转】Python之xml文档及配置文件处理(ElementTree模块、ConfigParser模块)

    [转]Python之xml文档及配置文件处理(ElementTree模块.ConfigParser模块) 本节内容 前言 XML处理模块 ConfigParser/configparser模块 总结 ...

  4. C# 构建XML(简单示例)

    C# 构建XML的简单示例: var pars = new Dictionary<string, string> { {"url","https://www. ...

  5. Linq对XML的简单操作

    前两章介绍了关于Linq创建.解析SOAP格式的XML,在实际运用中,可能会对xml进行一些其它的操作,比如基础的增删该查,而操作对象首先需要获取对象,针对于DOM操作来说,Linq确实方便了不少,如 ...

  6. ACEXML解析XML文件——简单示例程序

    掌握了ACMXML库解析XML文件的方法后,下面来实现一个比较完整的程序. 定义基本结构 xml文件格式如下 <?xml version="1.0"?> <roo ...

  7. SPRING IN ACTION 第4版笔记-第七章Advanced Spring MVC-002- 在xml中引用Java配置文件,声明DispatcherServlet、ContextLoaderListener

    一.所有声明都用xml 1. <?xml version="1.0" encoding="UTF-8"?> <web-app version= ...

  8. FOR XML PATH 简单介绍

    FOR XML PATH 有的人可能知道有的人可能不知道,其实它就是将查询结果集以XML形式展现,有了它我们可以简化我们的查询语句实现一些以前可能需要借助函数活存储过程来完成的工作.那么以一个实例为主 ...

  9. XML系列之--对电文格式XML的简单操作(三)

    前两章介绍了关于Linq创建.解析SOAP格式的XML,在实际运用中,可能会对xml进行一些其它的操作,比如基础的增删该查,而操作对象首先需要获取对象,针对于DOM操作来说,Linq确实方便了不少,如 ...

随机推荐

  1. Python的__getattribute__ vs __getattr__的妙用

    这里的属性即包括属性变量,也包括属性方法.即类的变量和方法. 当访问某个实例属性时, getattribute会被无条件调用,如未实现自己的getattr方法,会抛出AttributeError提示找 ...

  2. tyvj 2075 借教室 题解

    P2075 [NOIP2012T5]借教室 时间: 1000ms / 空间: 131072KiB / Java类名: Main 背景 noip2012-tg 描述 在大学期间,经常需要租借教室.大到院 ...

  3. popupWindow 用法总结 控制位置

    android中的dialog,以及activiy形式的dialog均是模态对话框,对话框不消失时,不能对其他页面进行操作,也就是其他页面不能获得焦点.而PopupWindow是非模态对话框,对话框显 ...

  4. 自动签到升级版(JS实现的每日定时任务)

    公司规定每日签到两次:日子太安逸了,有时候中午居然会忘记签到…… 于是,笔者寻思写一个自动签到的脚本:每天指定两个签到时段,每次打开页面,先检测当前是否为签到时段,如果在签到时段,则检查cookie中 ...

  5. Minify压缩JS和CSS

    Minify把CSS和JS压缩和削减(Minify:去掉空格回车符等),以及把多个CSS,JS文件整合到一个文件里.不要以为你的大带宽没有必要进行这类优化.使用它的理由更重要的是文件合并,而不是压缩, ...

  6. 【云计算】Docker容器不能修改hosts文件怎么解决?

    参考资料: http://bbs.csdn.net/topics/390871429 http://tieba.baidu.com/p/4295556808 http://stackoverflow. ...

  7. 【EasyUI】——EasyUI的布局

    做一个站点首先要有站点的布局,所谓的布局事实上就是网页的排版.就是说你的网页显示时是什么样子的. 就比方百度的首页: 无论是谁登录.网页都是这个样式的. EasyUI中的网页布局一共分为五部分,分别为 ...

  8. RaceWeb介绍(7):由500强公司数据高速生成百度地图——生成坐标字段及坐标数据

    接上篇. 一.生成X坐标.Y坐标两个字段. 我们须要为每一个公司建立X坐标和Y坐标字段,用来保存XY坐标. 既然为了突出"快",这一步就有程序来完毕吧. 右键单击"世界5 ...

  9. 我的第一段ionic代码

    ionic是基于angularjs的前端框架,用于实现移动app. 下面是第一段代码,先贴代码,有时间再整理: demo1.htm <!DOCTYPE html> <html ng- ...

  10. T-SQL 之 触发器

    触发器可以做很多事情,但也会带来很多问题.正确的使用在于在适当的时候使用,而不要在不适当的时候使用它们. 触发器的一些常见用途如下: [1] 弹性参照完整性:实现很多DRI不能实现的操作(例如,跨数据 ...