Unity-打开另一个exe可执行程序并传入参数

之前有做过一个项目,通过外部exe可执行打开另一个exe可执行程序,并通过传入不同参数来加载不同场景,本章通过一个Unity案例来讲解如果传入参数和获取参数并进行处理。

一、打开exe可执行程序并传入参数

1、首先新建两个工程,这里我以TransferParameter项目做传入参数,以ReceiveParameter项目做接收参数,本案例使用Unity 2019.4.8制作。

2、搭建UI
在这里插入图片描述
在这里插入图片描述
3、新建Script脚本TransferParameter,并挂载在Canvas上,讲输入框与按钮拖入其中。
在这里插入图片描述

using System.Diagnostics;
using UnityEngine;
using UnityEngine.UI;

public class TransferParameter : MonoBehaviour
{
    
    
    public InputField inputField;           //输入框
    public Button button;                   //按钮

    private void Start()
    {
    
    
        //添加事件-打开exe可执行程序并传入参数
        button.onClick.AddListener(() => 
        {
    
    
            Process process = new Process();
            process.StartInfo.FileName = "C://ReceiveParameter/ReceiveParameter.exe";
            process.StartInfo.Arguments = inputField.text;
            process.StartInfo.UseShellExecute = true;
            process.Start();
        });
    }
}

这里就以绝对路径来表示,此路径为ReceiveParameter打包出来后的可执行程序,放置在C盘根目录。到此这部分已经结束,我们开始第二部分。

二、获取参数并处理

1、搭建场景和UI,新建Game1和Game2场景,并添加到Build Settings内部
这里比较简单,直接用text来表示当前进入的场景,主要目的是获取到传入的参数
在这里插入图片描述
在这里插入图片描述
2、新建Script脚本ReceiveParameter,并挂载在Start场景的主相机上。

using System.Collections.Generic;
using UnityEngine;
using System;
using UnityEngine.SceneManagement;

public class ReceiveParameter : MonoBehaviour
{
    
    
    private void Start()
    {
    
    
        List<string> commandLineArgs = new List<string>(Environment.GetCommandLineArgs());

        //取索引为>=1的部分 index=0的值为文件路径信息 
        string sceneName = commandLineArgs[1];

        if (sceneName.Equals("Game1"))
        {
    
    
            SceneManager.LoadScene("Game1");
        }
        else if (sceneName.Equals("Game2"))
        {
    
    
            SceneManager.LoadScene("Game2");
        }
    }
}

3、打包并放入C盘根目录,名称需要和设置的路径一直。

三、运行结果

在这里插入图片描述
后面会利用此功能实现利用VS Form或Unity传入json并解析进行处理

猜你喜欢

转载自blog.csdn.net/weixin_38484443/article/details/117434875