国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Unity調(diào)用Windows彈框(User32.dll/System.Windows.Forms.dll)

這篇具有很好參考價(jià)值的文章主要介紹了Unity調(diào)用Windows彈框(User32.dll/System.Windows.Forms.dll)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

在開(kāi)發(fā) PC 端項(xiàng)目時(shí),有時(shí)我們需要提醒用戶進(jìn)行相關(guān)操作 / 提示用戶下一步該如何操作

那么我們就需要與 Windows 進(jìn)行交互,來(lái)告訴 Windows 彈個(gè)框出來(lái)

去提醒用戶,確認(rèn)/取消 是/否?

這里有兩種方法:

1.調(diào)用User32.dll外部庫(kù),實(shí)現(xiàn)彈框

unity 彈窗提示,Unity應(yīng)用及擴(kuò)展,windows,unity

?文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-641735.html

2.調(diào)用System.Windows.Forms.dll 外部庫(kù),實(shí)現(xiàn)彈框

unity 彈窗提示,Unity應(yīng)用及擴(kuò)展,windows,unity

?

一、調(diào)用User32.dll外部庫(kù),實(shí)現(xiàn)彈框
這里我介紹 Unity 中需要外部引用庫(kù),調(diào)用其中的函數(shù)實(shí)現(xiàn)彈框
unity 彈窗提示,Unity應(yīng)用及擴(kuò)展,windows,unity

?

1.先創(chuàng)建一個(gè)腳本 ChinarMessage ,不用繼承 Mono
?
//-----------------------
// @Author GarFey
// @date 20190612
// @version 1.0
//-----------------------
using System;
using System.Runtime.InteropServices;//調(diào)用外部庫(kù),需要引用命名空間

///
/// 為了調(diào)用外部庫(kù)腳本
///
public class ChinarMessage
{
? ? [DllImport("User32.dll", SetLastError = true, ThrowOnUnmappableChar = true, CharSet = CharSet.Auto)]
? ? public static extern int MessageBox(IntPtr handle, String message, String title, int type);
    //具體方法
}
2.在Unity邏輯代碼中,你需要彈出提示框的地方調(diào)用提示框
提示:
點(diǎn)擊提示框上邊相應(yīng)按鈕的時(shí)候,會(huì)有不同的返回值
2.1
returnNumber = ChinarMessage.MessageBox(IntPtr.Zero, "Chinar-0:返回值均:1", "確認(rèn)", 0);
? ? ? ? ? ? ? ? print(returnNumber);

unity 彈窗提示,Unity應(yīng)用及擴(kuò)展,windows,unity

?2.2

returnNumber = ChinarMessage.MessageBox(IntPtr.Zero, "Chinar-1:確認(rèn):1,取消:2", "確認(rèn)|取消", 1);
                print(returnNumber);

unity 彈窗提示,Unity應(yīng)用及擴(kuò)展,windows,unity

?2.3

returnNumber = ChinarMessage.MessageBox(IntPtr.Zero, "Chinar-2:中止:3,重試:4,忽略:5", "中止|重試|忽略", 2);

? ? ? ? ? ? ? ? print(returnNumber);

unity 彈窗提示,Unity應(yīng)用及擴(kuò)展,windows,unity

?2.4

returnNumber = ChinarMessage.MessageBox(IntPtr.Zero, "Chinar-3:是:6,否:7,取消:2", "是 | 否 | 取消", 3);

? ? ? ? ? ? ? ? print(returnNumber);

unity 彈窗提示,Unity應(yīng)用及擴(kuò)展,windows,unity

?2.5

returnNumber = ChinarMessage.MessageBox(IntPtr.Zero, "Chinar-4:是:6,否:7", "是 | 否", 4);

? ? ? ? ? ? ? ? print(returnNumber);

unity 彈窗提示,Unity應(yīng)用及擴(kuò)展,windows,unity

2.6

returnNumber = ChinarMessage.MessageBox(IntPtr.Zero, "Chinar-5:重試:4,取消:2", "重試 | 取消", 5);

? ? ? ? ? ? ? ? print(returnNumber);

unity 彈窗提示,Unity應(yīng)用及擴(kuò)展,windows,unity

?2.7

returnNumber = ChinarMessage.MessageBox(IntPtr.Zero, "Chinar-6:取消:2,重試:10,繼續(xù):11", "取消 | 重試 | 繼續(xù)", 6);

? ? ? ? ? ? ? ? print(returnNumber);

unity 彈窗提示,Unity應(yīng)用及擴(kuò)展,windows,unity

?

二、調(diào)用System.Windows.Forms.dll 外部庫(kù),實(shí)現(xiàn)彈框
這里我們可以調(diào)用 System.Windows.Forms.dll 外部庫(kù),很簡(jiǎn)單的就可以實(shí)現(xiàn)

unity 彈窗提示,Unity應(yīng)用及擴(kuò)展,windows,unity

點(diǎn)擊下載?System.Windows.Forms.dllhttps://pan.baidu.com/s/1ZLUdclF7AzTPuBFmyNs1UQ
獲取到的dll后,放到Unity的Plugine目錄下。
unity 彈窗提示,Unity應(yīng)用及擴(kuò)展,windows,unity

?

注意:
由于 Unity的機(jī)制 ,一定要新建一個(gè)空文件夾“Plugins”
將 System.Windows.Forms.dll 文件放到該文件夾下才行
在Unity邏輯代碼中,你需要彈出提示框的地方調(diào)用提示框
在你的調(diào)用的類(lèi)中,添加如下的引用
using MsgBoxBase = System.Windows.Forms.MessageBox; //引用命名空間下消息類(lèi)
using WinForms = System.Windows.Forms;? ? ? ? ? ? ? //引用命名空間
2.1
? ? ? ? ? ? ? ?
//Asterisk:包含一個(gè)符號(hào),該符號(hào)在圓圈中包含小寫(xiě)字母 i。
//OK:OK按鈕

MsgBoxBase.Show("Chinar,OK按鈕,燈泡圖標(biāo)", GetType().Name, WinForms.MessageBoxButtons.OK, WinForms.MessageBoxIcon.Asterisk);

unity 彈窗提示,Unity應(yīng)用及擴(kuò)展,windows,unity

2.2

//Error:包含一個(gè)符號(hào),該符號(hào)包含一個(gè)紅色背景圓圈,圓圈中為白色 X 符號(hào)。
//AbortRetryIgnore:包含中止、 重試和忽略按鈕。

MsgBoxBase.Show("Chinar,中止|重試|忽略,錯(cuò)誤圖標(biāo)", GetType().Name, WinForms.MessageBoxButtons.AbortRetryIgnore, WinForms.MessageBoxIcon.Error);

unity 彈窗提示,Unity應(yīng)用及擴(kuò)展,windows,unity

?2.3

//Exclamation:包含一個(gè)符號(hào),該符號(hào)包含一個(gè)黃色背景三角形,三角形中為感嘆號(hào)。
//OKCancel:中包含確定和取消按鈕。

MsgBoxBase.Show("Chinar,確定|取消,三角感嘆號(hào)", GetType().Name, WinForms.MessageBoxButtons.OKCancel, WinForms.MessageBoxIcon.Exclamation);

unity 彈窗提示,Unity應(yīng)用及擴(kuò)展,windows,unity

?2.4

//Hand: 包含一個(gè)符號(hào),該符號(hào)包含一個(gè)紅色背景圓圈,圓圈中為白色 X 符號(hào)。
//RetryCancel:重試和取消按鈕

MsgBoxBase.Show("Chinar,重試 | 取消,(同錯(cuò)誤圖標(biāo))", GetType().Name, WinForms.MessageBoxButtons.RetryCancel, WinForms.MessageBoxIcon.Hand);

unity 彈窗提示,Unity應(yīng)用及擴(kuò)展,windows,unity

?2.5

//Information:包含一個(gè)符號(hào),該符號(hào)在圓圈中包含小寫(xiě)字母 i。
//YesNo:是和否按鈕

switch (MsgBoxBase.Show("Chinar,是 | 否,燈泡", GetType().Name, WinForms.MessageBoxButtons.YesNo, WinForms.MessageBoxIcon.Information))
{
    case WinForms.DialogResult.Yes:
? ? ? ? ?print("對(duì)");
? ? ? ? ?break;
? ? case WinForms.DialogResult.No:
? ? ? ? ?print("錯(cuò)");
? ? ? ? ?break;
? ? case WinForms.DialogResult.None:
? ? ? ? ?print("無(wú)");
? ? ? ? ?break;
?}

unity 彈窗提示,Unity應(yīng)用及擴(kuò)展,windows,unity

?2.6

//None:未包含符號(hào)。
//YesNoCancel:是、否、取消按鈕

MsgBoxBase.Show("Chinar,是 | 否 | 取消,無(wú)圖標(biāo)", GetType().Name, WinForms.MessageBoxButtons.YesNoCancel, WinForms.MessageBoxIcon.None);

unity 彈窗提示,Unity應(yīng)用及擴(kuò)展,windows,unity

?2.7

//Question:包含一個(gè)符號(hào),該符號(hào)包含一個(gè)圓圈,圓圈中為問(wèn)號(hào)。 不再建議使用問(wèn)號(hào)消息圖標(biāo),因?yàn)檫@種圖標(biāo)無(wú)法清楚地表示特定類(lèi)型的消息,并且作為問(wèn)題的消息表述可應(yīng)用于任何消息類(lèi)型。 此外,用戶可能會(huì)將問(wèn)號(hào)消息符號(hào)與幫助信息混淆。 因此,不要在中使用問(wèn)號(hào)消息符號(hào)。 系統(tǒng)繼續(xù)支持它包含的內(nèi)容,只為滿足反向兼容性。

MsgBoxBase.Show("Chinar,OK按鈕,問(wèn)號(hào)?", GetType().Name, WinForms.MessageBoxButtons.OK, WinForms.MessageBoxIcon.Question);

unity 彈窗提示,Unity應(yīng)用及擴(kuò)展,windows,unity

?

//Stop:包含一個(gè)符號(hào),該符號(hào)包含一個(gè)紅色背景圓圈,圓圈中為白色 X 符號(hào)。
? ? ? ? ? ? ? ? MsgBoxBase.Show("Chinar,OK按鈕,停止", GetType().Name, WinForms.MessageBoxButtons.OK, WinForms.MessageBoxIcon.Stop);
【圖丟失】
//Warning:包含一個(gè)符號(hào),該符號(hào)包含一個(gè)黃色背景三角形,三角形中為感嘆號(hào)。
? ? ? ? ? ? ? ? MsgBoxBase.Show("Chinar,OK按鈕,警告", GetType().Name, WinForms.MessageBoxButtons.OK, WinForms.MessageBoxIcon.Warning);
【圖丟失】
提示:
點(diǎn)擊提示框上邊相應(yīng)按鈕的時(shí)候,會(huì)有不同的返回值
WinForms.DialogResult.Yes: / No / None /Cancel 等等
上邊代碼中,我寫(xiě)有一個(gè)例子,可以根據(jù)情況自己寫(xiě)判定規(guī)則
?switch (MsgBoxBase.Show("Chinar,是 | 否,燈泡", GetType().Name, WinForms.MessageBoxButtons.YesNo, WinForms.MessageBoxIcon.Information))
? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? case WinForms.DialogResult.Yes:
? ? ? ? ? ? ? ? ? ? ? ? print("對(duì)");
? ? ? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? ? ? case WinForms.DialogResult.No:
? ? ? ? ? ? ? ? ? ? ? ? print("錯(cuò)");
? ? ? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? ? ? case WinForms.DialogResult.None:
? ? ? ? ? ? ? ? ? ? ? ? print("無(wú)");
? ? ? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? }

到了這里,關(guān)于Unity調(diào)用Windows彈框(User32.dll/System.Windows.Forms.dll)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • unity 調(diào)用C++ dll 操作升級(jí)套娃函數(shù)調(diào)用

    unity 調(diào)用C++ dll 操作升級(jí)套娃函數(shù)調(diào)用

    之前一直以為C++生成dll,在unity中調(diào)用時(shí)要把傳出去的值設(shè)置在主函數(shù)中,以參數(shù)或反回值的形式。 當(dāng)然在DLL工程中可以說(shuō)沒(méi)有主函數(shù),那個(gè)可以運(yùn)行一個(gè)函數(shù),其會(huì)調(diào)用其他函數(shù)從而一直調(diào)其他相關(guān)函數(shù)。 那問(wèn)題是在層級(jí)是二或三------時(shí)被調(diào)用的那個(gè)函數(shù)的計(jì)算結(jié)果怎么能

    2024年02月13日
    瀏覽(17)
  • unity 調(diào)用C++ dll 有類(lèi)和指針操作

    unity 調(diào)用C++ dll 有類(lèi)和指針操作

    這個(gè)在之前unity 調(diào)用C++ dll 操作升級(jí)套娃函數(shù)調(diào)用_天人合一peng的博客-CSDN博客的基礎(chǔ)上,但實(shí)事時(shí)類(lèi)相互嵌套,非常不好處理。 1 測(cè)試直接將main()生成dll程序能運(yùn)行不。 ?發(fā)現(xiàn)是可以的。 2 那就是想方法把對(duì)象或指針的操作的下一級(jí)函數(shù)直接寫(xiě)到main里面,不就可以可以了嗎。

    2024年02月16日
    瀏覽(22)
  • 解決Windows找不到api-ms-win-downlevel-user32-l1-1-0.dll無(wú)法啟動(dòng)程序問(wèn)題

    解決Windows找不到api-ms-win-downlevel-user32-l1-1-0.dll無(wú)法啟動(dòng)程序問(wèn)題

    其實(shí)很多用戶玩單機(jī)游戲或者安裝軟件的時(shí)候就出現(xiàn)過(guò)這種問(wèn)題,如果是新手第一時(shí)間會(huì)認(rèn)為是軟件或游戲出錯(cuò)了,其實(shí)并不是這樣,其主要原因就是你電腦系統(tǒng)的該dll文件丟失了或者損壞了,這時(shí)你只需下載這個(gè)api-ms-win-downlevel-user32-l1-1-0.dll文件進(jìn)行安裝(前提是找到適合的

    2024年02月14日
    瀏覽(179)
  • C#winform軟件移植上linux的秘密,用GTK開(kāi)發(fā)System.Windows.Forms

    C#winform軟件移植上linux的秘密,用GTK開(kāi)發(fā)System.Windows.Forms

    國(guó)產(chǎn)系統(tǒng)大勢(shì)所趨,如果你公司的winform界面軟件需要在linux上運(yùn)行,如果軟件是用C#開(kāi)發(fā)的,現(xiàn)在我有一個(gè)好的快速解決方案。 世界第一的微軟的Microsoft Visual Studio,確實(shí)好用,C# 開(kāi)發(fā)起來(lái)確實(shí)效率高,不過(guò)微軟的開(kāi)發(fā)語(yǔ)言開(kāi)發(fā)的軟件的界面都是跟windows系統(tǒng)綁定的,現(xiàn)在.ne

    2024年02月12日
    瀏覽(19)
  • Unity——在C#中調(diào)用C++動(dòng)態(tài)鏈接庫(kù)(DLL)

    Unity——在C#中調(diào)用C++動(dòng)態(tài)鏈接庫(kù)(DLL)

    1、新建C++空項(xiàng)目 打開(kāi)VS,新建一個(gè)C++空項(xiàng)目,自命名項(xiàng)目名稱(chēng)與位置。 2、配置項(xiàng)目屬性為動(dòng)態(tài)鏈接庫(kù) 右鍵項(xiàng)目,點(diǎn)擊屬性,打開(kāi)項(xiàng)目屬性頁(yè),將常規(guī)中的配置類(lèi)型改為動(dòng)態(tài)庫(kù)(.dll)。 ?3、添加.h頭文件 右鍵頭文件,點(diǎn)擊添加—新建項(xiàng),選擇頭文件.h,命名為DllForUnity.h,點(diǎn)擊

    2024年02月10日
    瀏覽(20)
  • 無(wú)法定位程序輸入點(diǎn) invalid parameter noinfo noreturn 于動(dòng)態(tài)鏈接庫(kù)c: Windows SYSTEM32 MSVCP100.dll 上

    無(wú)法定位程序輸入點(diǎn) invalid parameter noinfo noreturn 于動(dòng)態(tài)鏈接庫(kù)c: Windows SYSTEM32 MSVCP100.dll 上

    本文錯(cuò)誤為在學(xué)習(xí)PHY6222這款芯片時(shí),點(diǎn)擊在線燒錄調(diào)試工具SocKit_V3.0.3報(bào)出的錯(cuò)誤 Visual Studio 2010 (VC++ 10.0) 解決 微軟官方網(wǎng)址 https://learn.microsoft.com/zh-cn/cpp/windows/latest-supported-vc-redist?view=msvc-170 在出現(xiàn)這個(gè)問(wèn)題之前,報(bào)錯(cuò)為缺少M(fèi)SVCP100.dll 于是去網(wǎng)上下載然后放在C盤(pán)對(duì)應(yīng)文件夾

    2024年02月01日
    瀏覽(24)
  • Unity調(diào)用微軟SpeechLib.Dll的C#類(lèi)實(shí)現(xiàn)語(yǔ)音合成功能

    using System.Collections; using System.Collections.Generic; using UnityEngine; using SpeechLib; public class Speech : MonoBehaviour { // Start is called before the first frame update void Start() { } 將Interop.SpeechLib.dll文件導(dǎo)入U(xiǎn)nity,然后把上面的腳本掛載到游戲?qū)ο笊暇湍軠y(cè)試語(yǔ)音合成的效果了。 經(jīng)測(cè)試 調(diào)用v.Speak這個(gè)方

    2024年02月13日
    瀏覽(32)
  • 使用Rider C# Dll工程和Unity工程互相調(diào)用、斷點(diǎn)方法

    使用Rider C# Dll工程和Unity工程互相調(diào)用、斷點(diǎn)方法

    創(chuàng)建C# Dll工程,生成C#工程Dll 創(chuàng)建Unity工程 Unity調(diào)用C#工程的代碼 C#工程調(diào)用Unity工程的代碼 斷點(diǎn)方法 創(chuàng)建工程 選這個(gè),注意UnityEngineDll這個(gè)選項(xiàng),要選你目標(biāo)unity版本的Dll 生成Dll 右鍵工程 簡(jiǎn)單,能看到這篇文章的都是優(yōu)秀的同學(xué),所以,此步略過(guò) 下面這兩個(gè)復(fù)制到unity工程

    2024年01月20日
    瀏覽(26)
  • 沒(méi)有注冊(cè)類(lèi) (異常來(lái)自 HRESULT:0x80040154 (REGDB_E_CLASSNOTREG)) 在 System.Windows.Forms.UnsafeNativeMethods.C

    沒(méi)有注冊(cè)類(lèi) (異常來(lái)自 HRESULT:0x80040154 (REGDB_E_CLASSNOTREG)) 在 System.Windows.Forms.UnsafeNativeMethods.C

    今天在有些客戶的電腦上安裝程序時(shí)日志提示了以下錯(cuò)誤: 2023-03-10 08:34:42.659 +08:00 [INF] 沒(méi)有注冊(cè)類(lèi) (異常來(lái)自 HRESULT:0x80040154 (REGDB_E_CLASSNOTREG)) 在 System.Windows.Forms.UnsafeNativeMethods.CoCreateInstance(Guid clsid, Object punkOuter, Int32 context, Guid iid) 在 System.Windows.Forms.AxHost.CreateWithLicense(Strin

    2024年02月02日
    瀏覽(17)
  • 無(wú)法啟動(dòng)程序,丟失user32.dll gdi32full.dll win32u.dll解決辦法

    無(wú)法啟動(dòng)程序,丟失user32.dll gdi32full.dll win32u.dll解決辦法

    首先確保dll文件放在正確的位置: 32位系統(tǒng)將dll文件放在C:WindowsSystem32 文件夾內(nèi)。64位系統(tǒng)將dll文件放在C:WindowsSystem32 文件夾和C:WindowsSysWOW64 文件夾內(nèi),保存兩份。 模塊已加載,但找不到入口點(diǎn)DLLRegisterServer 通常在運(yùn)行中注冊(cè)動(dòng)態(tài)庫(kù)文件: regsvr32 xxx.dll (按回車(chē)鍵執(zhí)行命令

    2024年02月05日
    瀏覽(96)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包