小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

【Unity】UGUI聊天消息氣泡 隨文本內(nèi)容自適應(yīng)

 勤奮不止 2019-03-07

游戲中需要用做UGUI做聊天界面。其中聊天氣泡ChatItem的UI要求能隨著聊天內(nèi)容文本的長(zhǎng)度自適應(yīng)的。

網(wǎng)上搜了一下聊天氣泡的UI,發(fā)現(xiàn)都不太符合咱的需求,具體來(lái)說(shuō)是文本寬度不足一行時(shí),文本寬度自增;文本寬度大于一行時(shí),文本高度自增。效果如下圖:

實(shí)現(xiàn)方法:

1、(UGUI)Scroll View/Viewport/Content是掛氣泡Item的節(jié)點(diǎn),給它添加Content Size Fitter和Vertical Layout Group組件,注意設(shè)置Vertical Fit為Preferred Size。

2、氣泡Item預(yù)制體(或者Sample游戲物體)結(jié)構(gòu)如下,給它添加上Layout Element組件,并勾上Preferred Height。

3、由于氣泡Item中的消息文本Text會(huì)動(dòng)態(tài)變寬變高,也要給它加上Content Size Fitter組件。剛開(kāi)始輸入文本時(shí),文本寬度不足一行,所以默認(rèn)是設(shè)置寬度優(yōu)先的。

4、接下來(lái)的操作是重點(diǎn),也是其他博客沒(méi)有提及的點(diǎn)。上面文本Text對(duì)象的Content Size Fitter組件設(shè)置是當(dāng)消息內(nèi)容不足一行的寬度時(shí)的情況(也就是剛開(kāi)始輸入文本時(shí)的狀態(tài)),此時(shí)是水平Preferred Size,垂直Unconstrained。當(dāng)消息內(nèi)容大于一行寬度時(shí),需要在腳本中動(dòng)態(tài)修改為水平Unconstrained,垂直P(pán)referred Size?。。?/p>

復(fù)制代碼
float curTextWidth = textObj.GetComponent<Text>().preferredWidth;
if (curTextWidth >= chatItemTextMaxWidth)
{
    // Text控件的Content Size Fitter由水平Preferred Size改為垂直P(pán)referred Size
    textObj.GetComponent<ContentSizeFitter>().horizontalFit = ContentSizeFitter.FitMode.Unconstrained;
    textObj.GetComponent<ContentSizeFitter>().verticalFit = ContentSizeFitter.FitMode.PreferredSize;
}
復(fù)制代碼

在Content物體同時(shí)掛Vertical Layout Group和Content Size Fitter組件后,就不需手動(dòng)計(jì)算子物體UI增加的高度了,Content下面的子物體高度會(huì)自動(dòng)計(jì)算并調(diào)整。

注意,在Content Size Fitter組件的控制下,UI的寬高不能通過(guò)物體UI自身的RectTransform獲得,要用gameObject.GetComponent<Text>().preferredHeight;來(lái)獲?。?/code>

 


 

重要參考:

 

 

  

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶(hù)發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶(hù) 評(píng)論公約

    類(lèi)似文章 更多