Unity调用Window提示框Yes/No(英文提示窗)
| 本文提供全流程,中文翻譯。 Chinar 堅(jiān)持將簡(jiǎn)單的生活方式,帶給世人! (擁有更好的閱讀體驗(yàn) —— 高分辨率用戶請(qǐng)根據(jù)需求調(diào)整網(wǎng)頁縮放比例) |
| Chinar —— 心分享、心創(chuàng)新! 助力實(shí)現(xiàn) Unity 開發(fā)的 PC 端項(xiàng)目,實(shí)現(xiàn) Windows 內(nèi)置彈窗 為新手節(jié)省寶貴的時(shí)間,避免采坑! |
Chinar 教程效果:
- 1
- Hint Frame —— 提示框
- 2
- Import Project —— 導(dǎo)入文件到 Unity 項(xiàng)目中
- 3
- Scripts —— 腳本
- 4
- Summarize —— 總結(jié)
- 支持
- May Be —— 搞開發(fā),總有一天要做的事!
全文高清圖片,點(diǎn)擊即可放大觀看 (很多人竟然不知道)
1
Hint Frame —— 提示框
Chinar 在全網(wǎng)搜索了許多資料,發(fā)現(xiàn)在于 Windows 的交互上很多都是空白的
而且大多數(shù),都是描述不清。許多大神們也都沒把實(shí)現(xiàn)流程寫完全,導(dǎo)致明明比較簡(jiǎn)單的東西,新手非常難理解
那么 Chinar 在這里就做個(gè)總結(jié),很簡(jiǎn)的實(shí)現(xiàn)彈框,大神們見笑!
在開發(fā) PC 端項(xiàng)目時(shí),有時(shí)我們需要提醒用戶進(jìn)行相關(guān)操作 / 提示用戶下一步該如何操作
那么我們就需要與 Windows 進(jìn)行交互,來告訴 Windows 彈個(gè)框出來
去提醒用戶,確認(rèn)/取消 是/否
這里我們可以調(diào)用 System.Windows.Forms.dll 外部庫,很簡(jiǎn)單的就可以實(shí)現(xiàn)
2
Import Project —— 導(dǎo)入文件到 Unity 項(xiàng)目中
點(diǎn)擊下載 System.Windows.Forms.dll
Chinar 免費(fèi)下載 System.Windows.Forms.dll
下載后將文件拖到 Unity 項(xiàng)目中
注意:
由于 Unity的機(jī)制 ,一定要新建一個(gè)空文件夾“Plugins”
將 System.Windows.Forms.dll 文件放到該文件夾下才行
3
Scripts —— 腳本
為了方便大家看到效果,我搭建了一個(gè)簡(jiǎn)單的UI,把所有彈框的效果都一一列舉
層次列表與UI結(jié)構(gòu)如下:
很簡(jiǎn)單,我們創(chuàng)建一個(gè)腳本 ChinarWindowsMessage 掛載空物體上
用來引用外部庫,調(diào)用庫中的函數(shù)來實(shí)現(xiàn)彈框
將 9 個(gè) Button 對(duì)應(yīng)添加到數(shù)組中
using MsgBoxBase = System.Windows.Forms.MessageBox; //引用命名空間下消息類 using WinForms = System.Windows.Forms; //引用命名空間/// <summary> /// Windows消息框 /// </summary> public class ChinarWindowsMessage : MonoBehaviour {public Button[] Buttons; //按鈕組private void Start(){for (int i = 0; i < Buttons.Length; i++) //動(dòng)態(tài)綁定事件{var i1 = i;Buttons[i].onClick.AddListener(() => Button(i1));}}/// <summary>/// 9個(gè)按鈕對(duì)應(yīng)彈框/// </summary>/// <param name="index"></param>private void Button(int index){switch (index){case 0://Asterisk:包含一個(gè)符號(hào),該符號(hào)在圓圈中包含小寫字母 i。//OK:OK按鈕MsgBoxBase.Show("Chinar,OK按鈕,燈泡圖標(biāo)", GetType().Name, WinForms.MessageBoxButtons.OK, WinForms.MessageBoxIcon.Asterisk);break;case 1://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);break;case 2://Exclamation:包含一個(gè)符號(hào),該符號(hào)包含一個(gè)黃色背景三角形,三角形中為感嘆號(hào)。//OKCancel:中包含確定和取消按鈕。MsgBoxBase.Show("Chinar,確定|取消,三角感嘆號(hào)", GetType().Name, WinForms.MessageBoxButtons.OKCancel, WinForms.MessageBoxIcon.Exclamation);break;case 3://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);break;case 4://Information:包含一個(gè)符號(hào),該符號(hào)在圓圈中包含小寫字母 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("無");break;}break;case 5://None:未包含符號(hào)。//YesNoCancel:是、否、取消按鈕MsgBoxBase.Show("Chinar,是 | 否 | 取消,無圖標(biāo)", GetType().Name, WinForms.MessageBoxButtons.YesNoCancel, WinForms.MessageBoxIcon.None);break;case 6://Question:包含一個(gè)符號(hào),該符號(hào)包含一個(gè)圓圈,圓圈中為問號(hào)。 不再建議使用問號(hào)消息圖標(biāo),因?yàn)檫@種圖標(biāo)無法清楚地表示特定類型的消息,并且作為問題的消息表述可應(yīng)用于任何消息類型。 此外,用戶可能會(huì)將問號(hào)消息符號(hào)與幫助信息混淆。 因此,不要在中使用問號(hào)消息符號(hào)。 系統(tǒng)繼續(xù)支持它包含的內(nèi)容,只為滿足反向兼容性。MsgBoxBase.Show("Chinar,OK按鈕,問號(hào)?", GetType().Name, WinForms.MessageBoxButtons.OK, WinForms.MessageBoxIcon.Question);break;case 7://Stop:包含一個(gè)符號(hào),該符號(hào)包含一個(gè)紅色背景圓圈,圓圈中為白色 X 符號(hào)。MsgBoxBase.Show("Chinar,OK按鈕,停止", GetType().Name, WinForms.MessageBoxButtons.OK, WinForms.MessageBoxIcon.Stop);break;case 8://Warning:包含一個(gè)符號(hào),該符號(hào)包含一個(gè)黃色背景三角形,三角形中為感嘆號(hào)。MsgBoxBase.Show("Chinar,OK按鈕,警告", GetType().Name, WinForms.MessageBoxButtons.OK, WinForms.MessageBoxIcon.Warning);break;}} }4
Summarize —— 總結(jié)
點(diǎn)擊運(yùn)行,最終效果
提示:
點(diǎn)擊提示框上邊相應(yīng)按鈕的時(shí)候,會(huì)有不同的返回值
WinForms.DialogResult.Yes: / No / None /Cancel 等等
上邊代碼中,我寫有一個(gè)例子,可以根據(jù)情況自己寫判定規(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("無");break;}
如果需求的是中文提示框,貼心的 Chinar 為大家準(zhǔn)備了中文教程
中文提示框教程(點(diǎn)擊跳轉(zhuǎn))
支持
May Be —— 搞開發(fā),總有一天要做的事!
| 擁有自己的服務(wù)器,無需再找攻略! Chinar 提供一站式教程,閉眼式創(chuàng)建! 為新手節(jié)省寶貴時(shí)間,避免采坑! |
先點(diǎn)擊領(lǐng)取 —— 阿里全產(chǎn)品優(yōu)惠券 (享受最低優(yōu)惠)
1 —— 云服務(wù)器超全購買流程 (新手必備!)
2 —— 阿里ECS云服務(wù)器自定義配置 - 購買教程(新手必備!)
3—— Windows 服務(wù)器配置、運(yùn)行、建站一條龍 !
4 —— Linux 服務(wù)器配置、運(yùn)行、建站一條龍 !
<script type="math/tex" id="MathJax-Element-1"> </script>
技術(shù)交流群:806091680 ! Chinar 歡迎你的加入
END
本博客為非營(yíng)利性個(gè)人原創(chuàng),除部分有明確署名的作品外,所刊登的所有作品的著作權(quán)均為本人所擁有,本人保留所有法定權(quán)利。違者必究
對(duì)于需要復(fù)制、轉(zhuǎn)載、鏈接和傳播博客文章或內(nèi)容的,請(qǐng)及時(shí)和本博主進(jìn)行聯(lián)系,留言,Email: ichinar@icloud.com
對(duì)于經(jīng)本博主明確授權(quán)和許可使用文章及內(nèi)容的,使用時(shí)請(qǐng)注明文章或內(nèi)容出處并注明網(wǎng)址
總結(jié)
以上是生活随笔為你收集整理的Unity调用Window提示框Yes/No(英文提示窗)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 自己写的uvc驱动支持IP2977/ip
- 下一篇: 你可曾了解过,数据分析师与商业数据分析师