最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Unity3D啟動外部程序并傳遞參數(shù)的實現(xiàn)

 更新時間:2021年04月13日 09:59:28   作者:NRE  
這篇文章主要介紹了Unity3D啟動外部程序并傳遞參數(shù)的實現(xiàn)方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

之前開發(fā)項目,一直都使用的是外殼程序加子程序的模式,通過外殼程序去啟動子程序,外殼程序和子程序之間的通信,是使用配置文件完成的。

我總覺得這樣通信很麻煩,因為外殼程序需要對配置文件進行更改和寫入,然后子程序又要讀取信息。而且整合的時候,會導(dǎo)致有很多配置文件,而且需要對路徑做很多處理和限制。

我發(fā)現(xiàn)Process.Start()函數(shù)中,是可以傳遞參數(shù)的。

也就是說,我們是可以在使用Process.Start()函數(shù)啟動外部程序時,傳遞參數(shù)的進行通信的。

具體操作如下:

public void StartEXE()
    {
        ProcessStartInfo processStartInfo = new ProcessStartInfo();
        processStartInfo.FileName = "C:/Users/Administrator/Desktop/Test/Demo.exe";
        processStartInfo.Arguments = "啟動 程序 1 2  3";
        Process.Start(processStartInfo);
    }

需要注意的是,如果存在多個參數(shù)的話,參數(shù)之間需要使用空格進行分隔。

外殼程序已經(jīng)傳遞了參數(shù),那么子程序如何接受參數(shù)呢?具體操作如下:

private void Start()
    {
        string[] args = Environment.GetCommandLineArgs();
        text.text = args.Length.ToString();
        for (int i = 0; i < args.Length; i++)
        {
            text.text += "\n" + "Arg" + i + ":  " + args[i];
        }
    }

我將所有的參數(shù)信息,打印在了一個Text上面。運行效果圖如下:

補充:Unity3D:啟動外部exe傳參以及設(shè)置窗口位置和大小

好久沒有更新博客了,最近項目上沒有太大的突破,也沒有涉及到新東西,所以想寫博客,但是無奈沒有新東西,好在最近有點新的功能要做,之前也做過,但是并沒有整理成博客,現(xiàn)在就記錄一下。省的還要去百度找。(最近好像新的Unity版本不能破解了,官網(wǎng)有時候也上不去,不知道Unity要搞什么東東。)

今天要說的是Unity啟動外部exe,并且傳遞參數(shù),改變外部exe窗口位置以及窗口大小。啟動exe這個百度搜一大堆,主要是怎么設(shè)置窗口位置及大小。窗口大小的方法Unity有自己的方法,但是位置就沒法設(shè)置了,我今天用的方法是Windows原生的方法。需要引用user32.dll。

廢話不多說了,下面上代碼

using UnityEngine;
using System.Runtime.InteropServices;
using System;
using System.Diagnostics; 
public class ProperWindows : MonoBehaviour
{
    [DllImport("user32.dll")]
    static extern IntPtr SetWindowLong(IntPtr hWnd, int _nIndex, int dwNewLong);
    [DllImport("user32.dll")]
    static extern bool SetWindowPos(IntPtr hWnd, int hWndInsertAfter, int X, int Y, int cx, int cy, uint uFlags);
    [DllImport("user32.dll")]
    static extern IntPtr GetForegroundWindow(); //獲取最前端窗體句柄
    [DllImport("user32.dll")]
    static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);
    //[DllImport("user32.dll")]
    //static extern IntPtr GetWindowThreadProcessld(); 
    private void Awake()
    {
        //啟動時傳過來的string數(shù)組,下標(biāo)為0的是啟動的外部exe程序的完整路徑,下標(biāo)為1及之后的參數(shù)是想要傳過來的參數(shù)。
        string[] args = Environment.GetCommandLineArgs();
        var winInfo = JsonUtility.FromJson<WinInfo>(args[1]);
        // 設(shè)置屏大小和顯示位置
        SetWindowPos(GetForegroundWindow(), 0, winInfo.x, winInfo.y, winInfo.width, winInfo.height, 0x0040);
    }
    // Use this for initialization
    void Start()
    {
        //啟動外部exe程序,第一個參數(shù)為exe完整路徑,第二個參數(shù)為要傳入的參數(shù)。
        string winInfo = JsonUtility.ToJson(new WinInfo(0, 0, 1000, 500));
        Process.Start(@"C:\Users\wangbo\Desktop\2\2.exe", winInfo);
    } 
    // Update is called once per frame
    void Update()
    { 
    }
}
[Serializable]
public class WinInfo
{
    public int x;
    public int y;
    public int width;
    public int height;    
    public WinInfo(int x, int y, int width, int height)
    {
        this.x = x;
        this.y = y;
        this.width = width;
        this.height = height;
    }
}

上面的代碼里我傳的參數(shù)是json格式的,在Start里啟動一個exe,在Awake里接收參數(shù),設(shè)置窗口位置以及大小。

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。如有錯誤或未考慮完全的地方,望不吝賜教。

  • C#中整理了幾種字符串截取方法小結(jié)

    C#中整理了幾種字符串截取方法小結(jié)

    本文給大家整理了幾種字符串截取方法,?(Substring);(Remove);(Replace)方法和split方法,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2024-01-01
  • 使用C#改善代碼質(zhì)量的技巧和實踐

    使用C#改善代碼質(zhì)量的技巧和實踐

    本文將通過多個編程技巧和實踐,展示如何顯著改善代碼質(zhì)量,以 C# 為例,結(jié)合 衛(wèi)語句、枚舉、字典映射、單一職責(zé)原則 等技巧,逐步優(yōu)化代碼,感興趣的小伙伴跟著小編一起來看看吧
    2025-03-03
  • C# OCR實現(xiàn)文字識別功能

    C# OCR實現(xiàn)文字識別功能

    OCR,中文叫做光學(xué)字符識別。它是利用光學(xué)技術(shù)和計算機技術(shù)把印在或?qū)懺诩埳系奈淖肿x取出來,并轉(zhuǎn)換成一種計算機能夠接受、人又可以理解的格式。本文將利用OCR實現(xiàn)文字識別功能,感興趣的可以了解一下
    2022-11-11
  • C#文件流進行壓縮和解壓縮的方法

    C#文件流進行壓縮和解壓縮的方法

    這篇文章主要介紹了C#文件流進行壓縮和解壓縮的方法,涉及C#文件流操作的相關(guān)技巧,需要的朋友可以參考下
    2015-05-05
  • C#使用Aspose.Cells創(chuàng)建和讀取Excel文件

    C#使用Aspose.Cells創(chuàng)建和讀取Excel文件

    這篇文章主要為大家詳細介紹了C#使用Aspose.Cells創(chuàng)建和讀取Excel文件,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-10-10
  • 一文帶你快速學(xué)會C#中WinForm框架的使用詳解

    一文帶你快速學(xué)會C#中WinForm框架的使用詳解

    WinForm是一門非常經(jīng)濟實惠的技術(shù),就是說,可以在短時間內(nèi)學(xué)會,并迅速借此進行項目開發(fā)。本文就來和大家聊聊WinForm框架的使用方法,希望對大家有所幫助
    2023-02-02
  • C#實體對象序列化成Json并讓字段的首字母小寫的兩種解決方法

    C#實體對象序列化成Json并讓字段的首字母小寫的兩種解決方法

    這篇文章主要介紹了C#實體對象序列化成Json并讓字段的首字母小寫的兩種方法,在這兩種方法中小編比較推薦使用第二種方法,需要的朋友可以參考下
    2018-06-06
  • C#中使用Override和New關(guān)鍵字進行版本控制

    C#中使用Override和New關(guān)鍵字進行版本控制

    在?C#?中,override?和?new?關(guān)鍵字用于控制類之間的成員方法的隱藏和重寫,理解它們之間的差異和使用場景對于設(shè)計靈活且易于維護的代碼至關(guān)重要,在這篇博客中,我們將詳細探討這兩個關(guān)鍵字的用法,并通過示例來說明它們的實際應(yīng)用,需要的朋友可以參考下
    2024-10-10
  • C#使用semaphore來管理異步下載請求的方法

    C#使用semaphore來管理異步下載請求的方法

    這篇文章主要介紹了C#使用semaphore來管理異步下載請求的方法,涉及C#使用semaphore實現(xiàn)多線程管理的技巧,需要的朋友可以參考下
    2015-06-06
  • 最新評論

    阜阳市| 平利县| 台北县| 苗栗县| 建阳市| 东乌| 青神县| 济阳县| 渝北区| 望谟县| 刚察县| 瑞安市| 建阳市| 罗源县| 永修县| 溧水县| 罗江县| 云梦县| 精河县| 永州市| 政和县| 玛曲县| 巢湖市| 会昌县| 徐水县| 灵石县| 梧州市| 唐海县| 柏乡县| 陕西省| 蒙山县| 淮北市| 松溪县| 诸暨市| 台山市| 东山县| 巫山县| 巴楚县| 太湖县| 新河县| 蒙山县|