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

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

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

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

我總覺得這樣通信很麻煩,因?yàn)橥鈿こ绦蛐枰獙?duì)配置文件進(jìn)行更改和寫入,然后子程序又要讀取信息。而且整合的時(shí)候,會(huì)導(dǎo)致有很多配置文件,而且需要對(duì)路徑做很多處理和限制。

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

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

具體操作如下:

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

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

外殼程序已經(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ù)信息,打印在了一個(gè)Text上面。運(yùn)行效果圖如下:

補(bǔ)充:Unity3D:?jiǎn)?dòng)外部exe傳參以及設(shè)置窗口位置和大小

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

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

廢話不多說(shuō)了,下面上代碼

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()
    {
        //啟動(dòng)時(shí)傳過(guò)來(lái)的string數(shù)組,下標(biāo)為0的是啟動(dòng)的外部exe程序的完整路徑,下標(biāo)為1及之后的參數(shù)是想要傳過(guò)來(lái)的參數(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()
    {
        //啟動(dòng)外部exe程序,第一個(gè)參數(shù)為exe完整路徑,第二個(gè)參數(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里啟動(dòng)一個(gè)exe,在Awake里接收參數(shù),設(shè)置窗口位置以及大小。

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

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

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

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

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

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

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

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

    C#文件流進(jìn)行壓縮和解壓縮的方法

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

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

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

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

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

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

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

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

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

    C#使用semaphore來(lái)管理異步下載請(qǐng)求的方法

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

    扶绥县| 唐河县| 吉林省| 齐河县| 岑溪市| 宁德市| 汉寿县| 资中县| 项城市| 永靖县| 穆棱市| 顺昌县| 林州市| 儋州市| 仙桃市| 海丰县| 宁南县| 枣庄市| 自贡市| 凭祥市| 辽源市| 曲周县| 全南县| 高淳县| 郸城县| 靖江市| 绥芬河市| 竹北市| 杂多县| 格尔木市| 齐河县| 英吉沙县| 腾冲县| 隆尧县| 永登县| 宜兰市| 宿州市| 闽清县| 洪江市| 阿巴嘎旗| 茶陵县|