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

Unity中,在按鈕的處理事件中,顯示UI(Panel)的一些問題

這篇具有很好參考價值的文章主要介紹了Unity中,在按鈕的處理事件中,顯示UI(Panel)的一些問題。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。

問題來源(自己遇到的):

(32條消息) Unity SetActive(True)滯后嚴(yán)重-游戲-CSDN問答

簡單概括就是,點(diǎn)擊按鈕,開始處理某個事件,這個事件需要花費(fèi)較長時間,我的想法是加入一個加載中界面,方便告知用戶當(dāng)前程序沒有卡住。在完成事件后,提示加載完成。

首先,為按鈕添加監(jiān)聽事件

unity點(diǎn)擊物體出現(xiàn)ui界面,unity,游戲引擎,ui,c#

我最開始是在上圖的ButtonOnClickEvent中使用panel.Setactive(true);來啟用加載界面,該語句之后進(jìn)行真正的按鈕處理事件,處理完成之后,改變panel中text的值顯示已完成,再Setactive(false)關(guān)閉panel。

如下

public void ButtonOnClickEvent(){
panel.SetActive(true);
ProcessButton(); //事件處理函數(shù)

.....//將panel的信息更新為加載完成
}

但我發(fā)現(xiàn),點(diǎn)下按鈕之后并不會彈出加載中界面,而是卡住,等待按鈕處理事件結(jié)束之后,直接彈出了加載完成界面,加載中界面直接被跳過了。

原因是Unity的UI渲染次序,一個按鈕的處理事件Unity是放在一個幀中的,所以等整個ButtonOnClickEvent處理結(jié)束,才會渲染UI。所以我們沒有看到加載中的界面,而是直接看到了加載完成,是因?yàn)樽詈箫@示的是已經(jīng)被更新的panel。

明白這個后,我們需要知道Unity的函數(shù)執(zhí)行順序,如圖(Unity手冊事件函數(shù)的執(zhí)行順序 - Unity 手冊)

unity點(diǎn)擊物體出現(xiàn)ui界面,unity,游戲引擎,ui,c#

?可以看到如果把SetActive(true)放到ButtonOnClickEvent中,那么我們就只能看到加載完成。因?yàn)樵赪aitForEndOfFrame前,OnGUI是最后執(zhí)行的。所以我的思路是,在下一幀的開始進(jìn)行事件處理,也就是在FixedUpdate中完成事件處理。

我們可以在ButtonOnClickEvent中添加一個狀態(tài)變量 state,代表需要處理事件,在ButtonOnClickEvent的最后,我們將state置為True,然后顯示UI,這樣ButtonOnClickEvent中只完成兩件事情,顯示加載中界面,將state置為true。然后在下一幀的FixedUpdate中,根據(jù)state判斷是否需要處理。實(shí)現(xiàn)如下:

bool state=false;
public void ButtonOnClickEvent(){
panel.SetActive(true);//提前配置好加載中的panel
state=true;
}

void FixedUpdate(){
if(state)
{
ProcessButton();
state=false;//記得把state置回false
}
}


void ProcessButton(){
......//事件具體處理

......//將panel的信息更新為加載完成,這里要注意,需要在panel中添加一個Button
//該按鈕控制將panel隱藏
}

?效果如圖

unity點(diǎn)擊物體出現(xiàn)ui界面,unity,游戲引擎,ui,c#

?unity點(diǎn)擊物體出現(xiàn)ui界面,unity,游戲引擎,ui,c#

?

以上,是我的解決方案,剛學(xué)Unity,不是很懂,解決方案不唯一,僅供參考。文章來源地址http://www.zghlxwxcb.cn/news/detail-776563.html

到了這里,關(guān)于Unity中,在按鈕的處理事件中,顯示UI(Panel)的一些問題的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • Unity給所有按鈕綁定監(jiān)聽事件

    第一步: //定義事件參數(shù) public class MyEventArgs { ? ? // 每個button的編號 ? ? public int id; ? ? // 每個 Button 本身 ? ? public GameObject obj; } 第二步: Button[] buttons; // 鼠標(biāo)點(diǎn)擊委托 ? ? public delegate void SkillButtonClickDelegate(MyEventArgs arg); ? ? public SkillButtonClickDelegate SkillButtonClick; private

    2024年02月04日
    瀏覽(21)
  • Unity UGUI之Button按鈕點(diǎn)擊事件

    Unity UGUI之Button按鈕點(diǎn)擊事件

    組件基本知識:Unity UGUI之Button控件的簡單認(rèn)識-CSDN博客 按鈕添加點(diǎn)擊事件雖然比較簡單,但是使用不同的方法靈活應(yīng)用開發(fā)起來效率會更高。 1、當(dāng)我們控制Unity一些組件的事件是組件本身自帶的,那么我們就可以考慮直接通過Button的On Click()中“+”按鈕,添加一個新事件,然

    2024年02月05日
    瀏覽(116)
  • Unity按鈕事件的幾種綁定方式

    Unity按鈕事件的幾種綁定方式

    許久沒有寫C#代碼了,對于一些東西自己給整忘了,在此記錄下,方便以后自己查閱 獲取到按鈕組件,我是將代碼掛載在其父節(jié)點(diǎn)上。 在代碼中獲取此按鈕,并對他就進(jìn)行綁定。一般都是使用的這類情況。 在腳本中寫一個public函數(shù),作為按鈕的監(jiān)聽函數(shù),在按鈕的Inspector面

    2024年02月11日
    瀏覽(23)
  • 【解決】Unity Project 面板資源顯示丟失的異常問題處理

    【解決】Unity Project 面板資源顯示丟失的異常問題處理

    開發(fā)平臺:Unity 2021.3.7f1c1 ? ??在開發(fā)過程中,遭遇 Project 面板資源顯示丟失、不全的問題。但 Unity Console 并未發(fā)出錯誤提示。 ? 前往 “工程目錄/Library” 刪除內(nèi)部所有文件并重打開該工程。Unity 會重新生成該文件目錄。

    2024年01月21日
    瀏覽(81)
  • element-ui中Notification 通知自定義樣式、按鈕及點(diǎn)擊事件

    element-ui中Notification 通知自定義樣式、按鈕及點(diǎn)擊事件

    Notification 通知用于懸浮出現(xiàn)在頁面角落,顯示全局的通知提醒消息。 ? ? ? ? element-ui官方文檔中說明Notification 通知組件的 message ?屬性支持傳入 HTML 片段,但是示例只展示了簡單的html片段,通常不能滿足開發(fā)中的更深入需要,比如我需要把通知彈框添加按鈕、復(fù)選框,尤其

    2024年02月14日
    瀏覽(87)
  • 【Unity】 基礎(chǔ)交互入門(按鈕點(diǎn)擊事件的三種方法)

    【Unity】 基礎(chǔ)交互入門(按鈕點(diǎn)擊事件的三種方法)

    1、在資源面板創(chuàng)建C#腳本 2、創(chuàng)建點(diǎn)擊事件需要執(zhí)行的代碼(這里以loadMain為例),新增一個叫OnStartButtonClick的Public方法。 可以選擇生成或者調(diào)試,從VS更新代碼到Unity。 3、場景中創(chuàng)建Button和empty(生成空的GameObject) 4、將代碼掛在剛剛的GameObject上(這里將GameObject重命名為

    2024年02月09日
    瀏覽(26)
  • 【小技巧】Unity UGUI 中使用腳本激活按鈕onclick事件

    【小技巧】Unity UGUI 中使用腳本激活按鈕onclick事件

    在使用unity UGUI 按鈕通常會直接在面板點(diǎn)擊按鈕的onclick增加事件并將需要按鈕觸發(fā)功能選擇好,已經(jīng)制作好按鈕想使用腳本來控制點(diǎn)擊的發(fā)生。 1.場景中Button是直接采用拖拽的方式實(shí)現(xiàn)打印功能 2.場景中Button1是直接調(diào)用腳本中Best()方法; ? ?3.腳本代碼: using System.Collec

    2023年04月09日
    瀏覽(18)
  • Vue中使用element-ui 給按鈕綁定一個單擊事件,實(shí)現(xiàn)點(diǎn)擊按鈕就彈出一個dialog對話框

    Vue中使用element-ui 給按鈕綁定一個單擊事件,實(shí)現(xiàn)點(diǎn)擊按鈕就彈出一個dialog對話框

    1.需求描述 想要實(shí)現(xiàn)點(diǎn)擊一個按鈕就彈出一個對話框,在對話框中可輸入數(shù)據(jù)進(jìn)行提交,在點(diǎn)擊取消時對話框關(guān)閉 2.功能實(shí)現(xiàn) 1.創(chuàng)建按鈕 在element中把找到按鈕的代碼放到div里 2.創(chuàng)建對話框 在element中找到dialog對話框?qū)?yīng)的代碼,把代碼粘貼到對應(yīng)的位置 3.對話框與按鈕的綁定

    2024年01月18日
    瀏覽(105)
  • Unity3d中Scene場景2D模式下放大后UI元素后不顯示的問題

    Unity3d中Scene場景2D模式下放大后UI元素后不顯示的問題

    如題:UI在game視圖顯示沒有問題, 在Play狀態(tài)下,在Sence視圖查看UI對象的時候進(jìn)行放大操作,然后UI就不顯示了或者顯示不全,縮小就恢復(fù)正常。這讓我在Play模式下預(yù)覽UI狀態(tài)很麻煩。相關(guān)問題描述較少。 初步判定為攝像機(jī)問題,但我們的項(xiàng)目最近并沒有對相機(jī)進(jìn)行過什么調(diào)

    2024年02月03日
    瀏覽(19)
  • Unity UI -- (5)增加基礎(chǔ)按鈕功能

    Unity UI -- (5)增加基礎(chǔ)按鈕功能

    ? ? ? ? 良好的UI設(shè)計(jì)會清晰地和用戶溝通。用戶知道他們能和屏幕上哪些東西交互,哪些不能。如果他們進(jìn)行了交互,他們也要清楚地知道交互是否成功。換句話說,UI要提供給用戶很多反饋。 ? ? ? ? 我們可以來看看在Unity里或者在計(jì)算機(jī)上的任何應(yīng)用程序: ? ? ? ? 將

    2024年02月09日
    瀏覽(22)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包