日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

UGUI 下拉滚动框

發(fā)布時間:2024/4/15 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 UGUI 下拉滚动框 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

開始制作好友系統(tǒng)了, 發(fā)現(xiàn)有一個UI跟QQ的面板一模一樣. 于是就寫了一個公共的下拉滾動框.需要把按鈕的中心點(pivot.y = 1),描點為最上方 直接上圖吧

代碼如下:

using UnityEngine; using System.Collections; using UnityEngine.UI; using UnityEngine.EventSystems; using System.Collections.Generic; using UnityEngine.Events;public class DropScroll : MonoBehaviour {[SerializeField]private Button[] btnList; //提供多個按鈕private RectTransform thisRT;[SerializeField]private GameObject scrollViewTmp; //提供一個滾動視圖模版private List<RectTransform> scrollViewList = new List<RectTransform>(); public void Start() {Init();}public void Init() {RectTransform rt = null;foreach (var btn in btnList){EventTriggerListener.Get(btn.gameObject).OnClick += BtnDropClickEvent;rt = GameObject.Instantiate(scrollViewTmp).GetComponent<RectTransform>();scrollViewList.Add(rt);rt.gameObject.SetActive(false);rt.transform.SetParent(this.transform,false);}thisRT = this.GetComponent<RectTransform>();}private void BtnDropClickEvent(GameObject go) {RectTransform rt = go.GetComponent<RectTransform>();RectTransform btnRt = null;float height = thisRT.sizeDelta.y;int index = rt.GetSiblingIndex();HideAllScrollView();scrollViewList[index].sizeDelta = new Vector2(thisRT.sizeDelta.x, height - btnList.Length * rt.sizeDelta.y);scrollViewList[index].anchoredPosition = new Vector2(0, -((index + 1) * rt.sizeDelta.y));scrollViewList[index].gameObject.SetActive(true);for (int i = 0; i < btnList.Length; i++){btnRt = btnList[i].GetComponent<RectTransform>();if (i > index){btnRt.anchoredPosition = new Vector2(btnRt.anchoredPosition.x, -height + ((btnList.Length - i) * btnRt.sizeDelta.y));}else {btnRt.anchoredPosition = new Vector2(btnRt.anchoredPosition.x, -(i * btnRt.sizeDelta.y));}}}private void HideAllScrollView() {for (int i = 0; i < scrollViewList.Count; i++){scrollViewList[i].gameObject.SetActive(false);}} }public class EventTriggerListener : UnityEngine.EventSystems.EventTrigger {public delegate void VoidDelegate(GameObject go);public event VoidDelegate OnClick;static public EventTriggerListener Get(GameObject go){EventTriggerListener listener = go.GetComponent<EventTriggerListener>();if (listener == null) listener = go.AddComponent<EventTriggerListener>();return listener;}public override void OnPointerClick(PointerEventData eventData){if (OnClick != null)OnClick(gameObject);} }

?

層次圖:

轉(zhuǎn)載于:https://www.cnblogs.com/plateFace/p/5364026.html

總結(jié)

以上是生活随笔為你收集整理的UGUI 下拉滚动框的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。