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>

  

参考:Unity3D读取XML文档信息

[Unity菜鸟] Unity读XML的更多相关文章

  1. [Unity菜鸟] Unity发布web后,从HTML调用本地文件

    1. 遇到的问题 从xml读数据,xml的编码用中文就会乱码,改编码格式就调用不了.目前采用默认的ANSI编码. .exe    .txt  .xlsx  .xml  .test Run     √ ...

  2. [Unity菜鸟] Unity Web Player 相关问题 (待完善)

    1. 发布网页版Unity自适应网页大小 发布网页版,Unity3D自适应网页大小.这个问题困扰了我很长时间,今天终于把他解决了,给大家分享一下. 这里用Uinty4.0发布网页版,我去掉了里面的标题 ...

  3. [Unity菜鸟] Unity鼠标双击,鼠标函数整理(未完)

    1. 鼠标双击 void OnGUI() { Event Mouse = Event.current; if (Mouse.isMouse && Mouse.type == Event ...

  4. [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 [ ...

  5. Unity又称Unity Application Block

    本文关注以下方面(环境为VS2012..Net Framework 4.5以及Unity 3): Ioc/DI简介: Unity简单示例 一.Ioc/DI简介 IoC 即 Inversion of C ...

  6. 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 ...

  7. python 应用xml.dom.minidom读xml

    xml文件 <?xml version="1.0" encoding="utf-8"?> <city> <name>上海&l ...

  8. Ubuntu 11.10 安装GMONE3,卸载 UNITY和UNITY 2D

    Ubuntu 11.10安装GNOME3: 1)sudo apt-get install gnome-shell    sudo apt-get install gnome-themes*   (或者 ...

  9. C#操作Xml:使用XmlReader读Xml

    XmlDocument和XElement在读取Xml时要将整个Xml文档放到内存中去操作,这样做操作简单,但是很费内存和IO(可能是磁盘IO或者网络IO):而在有些场景下我们必须考虑尽可能节省内存和I ...

随机推荐

  1. Linux下安装和配置java开发环境(jdk/eclipse/tomcat)

    第一步 安装jdk 1.进入usr目录 cd /usr 2.在usr目录下建立java安装目录 mkdir java 3.将jdk-6u24-linux-i586.bin拷贝到java目录下 cp j ...

  2. C++编译期判断是否能够转型

    #include <iostream> #include <vector> using namespace std; template<class T,class U&g ...

  3. iOS进阶——可取消的block

    + (id)performBlock:(void (^)())aBlock onQueue:(dispatch_queue_t)queue afterDelay:(NSTimeInterval)del ...

  4. ubuntu10.4 server 配置VPN 安装pptp无法连接外网解决(转)

    链接:http://www.ppkj.net/2011/04/30/ubuntu10-4-server-%E5%AE%89%E8%A3%85pptp%E6%97%A0%E6%B3%95%E8%BF%9 ...

  5. L011-oldboy-mysql-dba-lesson11

    L011-oldboy-mysql-dba-lesson11 [root@ab01 ~]# mysqladmin -i 1 -r status     #mysqladmin监控的命令 Uptime: ...

  6. CentOs Linux 分区建议

    硬盘分区方案 在计算机上安装Linux系统,对硬盘进行分区是一个非常重要的步骤,下面介绍几个分区方案. (1)方案1(桌面)/boot:用来存放与Linux系统启动有关的程序,比如启动引导装载程序等, ...

  7. js定义参数默认值

    javascript可以用arguments定义参数组.   一.简单的定义参数默认值 function test1(a,b){ //如果有参数一,则返回参数一,如果没有返回默认值"这是参数 ...

  8. PhpExcel数组输出到Excel浏览器下载

    经常是mysql查出二维数组,并且数组的带key也是有意义的,考虑到经常用,就打算弄个函数出来,方便以后用! 相对是规范的数组哈,具体可看下$data数组: 生成的excel第一行是对应的key: 直 ...

  9. cxgrid GridMode 等于 True 时的一些问题。

    When using grid mode, the data controller loads a fixed number of dataset records into memory. The n ...

  10. PyQt4学习笔记2:事件和信号

    事件是任何 GUI 程序中很重要的部分.所有 GUI 应用都是事件驱动的.一个应用对其生命期产生的不同的事件类型做出反应.事件是主要由应用的用户产生.但是,也可以通过其他方法产生,比如,网络通信,窗口 ...