[Unity菜鸟] Unity读XML
1. 在Unity中调试可行,发布成exe可行,发布成web不行
Application.dataPath 在Unity中调试是在“..Assets”文件夹下, 发布成exe文件是在“..yourName_Data”文件夹下
using UnityEngine;
using System.Collections;
using System.Xml; public class CallXml
{
//XML文件路径 在Unity中调试
public static string localUrl = Application.dataPath + "/CallExe.xml"; public static XmlDocument ReadAndLoadXml()
{
XmlDocument doc = new XmlDocument();
//Debug.Log("加载xml文档");
doc.Load(localUrl);
return doc; } public static string GetPath(string tagName)
{
string _path = "";
XmlDocument xmlDoc = ReadAndLoadXml();
XmlNode provinces = xmlDoc.SelectSingleNode("xml"); //顶层节点 foreach (XmlNode province in provinces)
{
XmlElement _province = (XmlElement)province; if (tagName == _province.GetAttribute("name"))
{
//根据传入的tagName获取路径
_path = _province.GetAttribute("path");
}
}
return _path;
}
}
调用程序(unity中测试时,发布exe时调用)
Process proc = new Process();
// unity中和发布exe时调用
proc.StartInfo.FileName = CallXml.GetPath("one");
proc.Start();
//可以用下面代码直接调用程序
System.Diagnostics.Process.Start("notepad");
Process.Start(@"C:\Users\DELL\Desktop\123.txt"); //但当报如下错误提示时,就要用上述方式调用程序
error CS0120: An object reference is required to access non-static member `System.Diagnostics.Process.Start()'
2. 发布成web之后调用xml里的文件
using UnityEngine;
using System.Collections;
using System.Xml; public class CallXmlWeb : MonoBehaviour { private static WWW _statusFile; // Use this for initialization
IEnumerator Start ()
{
yield return StartCoroutine(ReadXML());
print(_statusFile.text);
} private IEnumerator ReadXML()
{
yield return _statusFile = new WWW(Application.dataPath + "/CallExe.xml");
} public static XmlDocument ReadAndLoadXml()
{
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.LoadXml(_statusFile.text);
return xmlDoc;
} //根据节点名,读取节点中的值
public static string GetPath(string tagName)
{
string _path = "";
XmlDocument xmlDoc = ReadAndLoadXml();
XmlNode provinces = xmlDoc.SelectSingleNode("xml"); //顶层节点 foreach (XmlNode province in provinces)
{
XmlElement _province = (XmlElement)province; if (tagName == _province.GetAttribute("name"))
{
//根据传入的tagName获取路径
_path = _province.GetAttribute("path");
}
}
return _path;
}
}
调用程序(发布web时调用)
注意1: 此时用下面代码调用不会有结果,因为web的安全机制,不能随便调用本地程序。 传入路径/xx/xx.exe等也不行,网上有其它的解决方法。
proc.StartInfo.FileName = CallXmlWeb.GetPath("notepad");
但可以用GetPath("notepad");读取到XML文件里面的内容
注意2:从其他函数调用此函数时,读取不到XML里的内容,在一个函数内部测试就可以,暂不知道原因。
3. XML文件CallExe.xml
<?xml version="1.0" encoding="utf-8"?>
<xml>
<tag name ="notepad" path ="notepad"> </tag>
<tag name ="qq" path ="C:\Program Files (x86)\Tencent\QQ\QQProtect\Bin\QQProtect.exe"> </tag>
<tag name ="jisuanqi" path ="calc"> </tag>
</xml>
[Unity菜鸟] Unity读XML的更多相关文章
- [Unity菜鸟] Unity发布web后,从HTML调用本地文件
1. 遇到的问题 从xml读数据,xml的编码用中文就会乱码,改编码格式就调用不了.目前采用默认的ANSI编码. .exe .txt .xlsx .xml .test Run √ ...
- [Unity菜鸟] Unity Web Player 相关问题 (待完善)
1. 发布网页版Unity自适应网页大小 发布网页版,Unity3D自适应网页大小.这个问题困扰了我很长时间,今天终于把他解决了,给大家分享一下. 这里用Uinty4.0发布网页版,我去掉了里面的标题 ...
- [Unity菜鸟] Unity鼠标双击,鼠标函数整理(未完)
1. 鼠标双击 void OnGUI() { Event Mouse = Event.current; if (Mouse.isMouse && Mouse.type == Event ...
- [Unity][安卓]Unity和Android Studio 3.0 交互通讯(1)Android Studio 3.0 设置
[安卓]Android Studio 3.0 JDK安卓环境配置(2017.10) http://blog.csdn.net/bulademian/article/details/78387052 [ ...
- Unity又称Unity Application Block
本文关注以下方面(环境为VS2012..Net Framework 4.5以及Unity 3): Ioc/DI简介: Unity简单示例 一.Ioc/DI简介 IoC 即 Inversion of C ...
- C#操作XML(读XML,写XML,更新,删除节点,与dataset结合等)【转载】
已知有一个XML文件(bookstore.xml)如下: Corets, Eva 5.95 1.插入节点 往节点中插入一个节点: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ...
- python 应用xml.dom.minidom读xml
xml文件 <?xml version="1.0" encoding="utf-8"?> <city> <name>上海&l ...
- Ubuntu 11.10 安装GMONE3,卸载 UNITY和UNITY 2D
Ubuntu 11.10安装GNOME3: 1)sudo apt-get install gnome-shell sudo apt-get install gnome-themes* (或者 ...
- C#操作Xml:使用XmlReader读Xml
XmlDocument和XElement在读取Xml时要将整个Xml文档放到内存中去操作,这样做操作简单,但是很费内存和IO(可能是磁盘IO或者网络IO):而在有些场景下我们必须考虑尽可能节省内存和I ...
随机推荐
- Qt移植 Window --Linux
1.把源代码复制到Linux目录,使用qmake命令,注意在shell中直接使用qmake命令注意设置PATH环境变量 2. 在目录中会生成Makeflie文件 3. make即可 /usr/bin/ ...
- Brackets - 又一款牛x的WEB开发编辑器
Brackets官网下载: http://brackets.io/ Adobe Brackets是由Adobe主导开发一款主打web开发的编辑器. 是继TextMate,Sublime Text这两个 ...
- Jquery-zTree的基本用法
[简介] zTree 是利用 JQuery 的核心代码,实现一套能完成大部分常用功能的 Tree 插件 兼容 IE.FireFox.Chrome 等浏览器 在一个页面内可同时生成多个 Tree 实例 ...
- RHEL 6.5升级GCC 4.9.3
前提:保证旧版的gcc,g++存在! root用户 1. 下载源码和依赖包源码:新建目录bakwget http://ftp.gnu.org/gnu/gcc/gcc-4.9.3/gcc-4.9.3.t ...
- Spark Streaming揭秘 Day27 Job产生机制
Spark Streaming揭秘 Day27 Job产生机制 今天主要讨论一个问题,就是除了DStream action以外,还有什么地方可以产生Job,这会有助于了解Spark Streaming ...
- Linux网络通信编程(套接字模型TCP\UDP与IO多路复用模型select\poll\epoll)
Linux下测试代码: http://www.linuxhowtos.org/C_C++/socket.htm TCP模型 //TCPClient.c #include<string.h> ...
- Foreign Exchange
10763 Foreign ExchangeYour non-profit organization (iCORE - international Confederation of Revolver ...
- Button控件
1.通过设置AutoSize(bool)属性来控制按钮的大小以适应文本的长度 btn_One.AutoSize = true;//设置按钮基于内容自动调整大小 2.当按钮得到焦点是自动放大,失去焦点时 ...
- GridView ItemCommand
GridView ItemCommand中取某行某列的值方法,这里提供两个常用的: 一.用CommandArgument属性取值页面如下: <asp:TemplateColumn HeaderT ...
- SVN 提交必填备注Commit
操作方法:在SVN的Repositories下,找到要配置的项目,在项目目录下找到hooks文件夹,在其下创建pre-commit.bat文件,把下面复制进去就可以了(无需重启,如果改动,保存bat文 ...