专栏首页Unity TechnologyJtro的技术分享,外部调起unity程序,unity程序调起exe失败的问题解决
原创

Jtro的技术分享,外部调起unity程序,unity程序调起exe失败的问题解决

当前我在做的是这样一个功能,网页上点击一个按钮,然后调起一个unity项目管理器,说的管理器,也就是通过管理器打开unity程序,如果本地安装了unity程序,就直接打开,如果本地没有,或者更新了unity 程序,那么这个管理器还需要更新这个unity程序.流程大概是这样.那么遇到的问题是:unity程序里面有串口通讯的功能,既然有串口通讯,那么就肯定会有获取串口的功能,但是这个功能没有写在unity中,我是写了一个控制台程序,获取到串口号,再传给unity.

那么流程清晰了

网页点击打开按钮->调起unity管理器(根据网页的参数打开或下载对应的unity程序)->unity需要打开exe获取串口号.

但是在跑流程的时候遇到的问题是:如果直接双击打开unity程序,获取到串口号是没有问题的,上位机与下位机通讯都正常,但是如果在网页中通过按钮打开unity程序,就不会获取到串口号,也就是说unity没能打开它专用的获取串口号的exe程序

一开始,我以为是因为放在C盘的原因,因为C盘是禁止一些敏感操作的,后来放在D盘,发现还是这样.

分析问题:既然双击unity程序可以正常打开,那么就说明unity本身这块的程序是没有问题的.通过管理器打开失败,基本确定问题出在管理器.

那么先看看管理器是怎么打开unity程序的

Process.Start(Contant.AppPath + Contant.VirtualVision + @"\" + Contant.VirtualVision + ".exe");

这样调起exe是没有问题的,但是搜索到msdn上的解释:

1.png

也就是说通过System.Diagnostics.Process.Start()打开的程序是一个独立的exe文件

但是如果被System.Diagnostics.Process.Start()打开的这个程序还需要调用配置文件或者是其他的什么文件,则必须设置WorkingDirectory,将工作目录指向需要被调用的配置文件所在的目录。否则,这个通过System.Diagnostics.Process.Start()打开的程序将会找不到该配置文件。

所以要将以前的打开方式变化一下:

 Process process = new Process();
                            process.StartInfo.FileName = Contant.AppPath + Contant.VirtualVision + @"\" + Contant.VirtualVision + ".exe";
                            //MessageBox.Show(process.StartInfo.FileName);
                            process.StartInfo.WorkingDirectory = Contant.AppPath + Contant.VirtualVision;
                            process.Start();

改成这样之后,通过网页打开unity程序后,unity自己能打开获取串口号的信息,软硬件结合的数据通讯问题到这就解决了.

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Jtro的开发杂记

    当高版本(unity2018)的项目迁移到低版本(unity2017)中的时候,需要将项目中的“Packages”文件夹中的json文件删除并让它重新生成。

    LittleU
  • Jtro的技术分享:UGUI的极限优化

    关于unity中的UGUI优化,总有说不完的话题,优化方式有很多种,我今天要说的这种,算是一种简单的优化,实在开发人员觉得实在没有优化的方式采取的优化方式。 ...

    LittleU
  • 角色动画的APPLY ROOT MOTION和BAKE INTO POSE问题(关于模型中的动画的位移变换问题

    导入到unity3d的一些带动画的模型,有的动画会有位移变换,有的则没有。而是否将模型在动画中的位移变换,应用到模型在场景中的位移,有两个地方需要设置:Appl...

    LittleU
  • 吹弹牛皮之Unity aar方式接入SDK(二)

    1.首先需要需要将android sdk的platform-tools目录设置到环境变量的path中。

    用户7698595
  • 埃森哲 - 人工智能应用之道

    以下内容来自于 - Accenture Applied Intelligence

    用户6026865
  • Android使用BLE(低功耗蓝牙,Bluetooth Low Energy)

    在学习BLE的过程中,积累了一些心得的DEMO,放到Github,形成本文。感兴趣的同学可以下载到源代码。 github: https://github.co...

    zhangyunfeiVir
  • sonar中的技术债务简要了解 原

    sonar中技术债务的计算基于SQALE(Software Quality Assessment based on Lifecycle Expectation...

    donghui
  • 【必看】真实项目:两层架构综合实验(华为命令)

    ② 企业内网划分多个vlan ,减少广播域大小,提高网络稳定性接入层交换机配置vlan ,并将用户划入相应的vlan配置好trunk链路核心上面配置vlan 和...

    网络技术联盟站
  • RPA机器人流程自动化的灯塔效应

    通过对RPA行业生态中的观察与分析,因机器人流程自动化的实现有重服务的鲜明特点,所以往往对于实施公司或者厂商来说,如果为客户实施服务的项目无法沉淀出可复制的解决...

    蕉黄
  • Toast BadTokenException

    从报错信息看应该是Toast的。而且都在7.1.2以下,也就是API25以下。查看Toast的handleShow方法(api27和api25),发现是因为 m...

    提莫队长

扫码关注云+社区

领取腾讯云代金券