unity UGUI基礎(三)
阿新 • • 發佈:2018-12-26
推薦閱讀:
UGUI的簡介:
UGUI系統是從Unity 4.6開始,被整合到Unity的編輯器中Unity官方給這個新的UI系統賦予的標籤是:靈活,快速和視覺化!,簡單來說對於開發者而言就是有三個優點:效率高效果好,易於使用,擴充套件,以及與Unity的相容性高。
在不使用任何程式碼的前提下,就可以簡單快速額在遊戲中建立其一套UI介面,這在過去是絕對不可想想的,但是新的UI系統確實做到了這一點因為Unity預定義了很多常見的元件,它們以“遊戲物件”的形式存在於遊戲場景中。
在前文中我們已經通過一系列案例掌握了UGUI的使用,下面我們最後再來鞏固一下。
下面我們再舉個關卡分頁設計例子,綜合理解UGUI
實現直接滑動
設定通過新增元件設定內容的滑動,多餘內容的隱藏
實現點選下面的圓圈滑動
主要程式碼:
using UnityEngine; using System.Collections; using UnityEngine.EventSystems; using UnityEngine.UI; public class LevelButtonScrollRect : MonoBehaviour ,IBeginDragHandler,IEndDragHandler { private ScrollRect scrollRect; public float smoothing = 4; //插值的速度 private float[] pageArray=new float[]{ 0,0.33333f,0.66666f,1 }; //每個頁面X軸座標 private float targetHorizontalPosition=0; //距離最近頁面的X座標 private bool isDraging = false; //是否拖拽的標誌位 public Toggle[] toggleArray; //圓圈陣列 void Start () { scrollRect = GetComponent<ScrollRect>(); } void Update () { if(isDraging==false) scrollRect.horizontalNormalizedPosition = Mathf.Lerp(scrollRect.horizontalNormalizedPosition, targetHorizontalPosition, Time.deltaTime*smoothing); } public void OnBeginDrag(PointerEventData eventData) { isDraging = true; } public void OnEndDrag(PointerEventData eventData) { isDraging = false; //找到當前位置與每頁距離最小的頁面,並切換到該頁面 float posX = scrollRect.horizontalNormalizedPosition; int index = 0; float offset = Mathf.Abs(pageArray[index] - posX); for (int i = 1; i < pageArray.Length; i++) { float offsetTemp = Mathf.Abs(pageArray[i] - posX); if (offsetTemp < offset) { index = i; offset = offsetTemp; } } targetHorizontalPosition = pageArray[index]; toggleArray[index].isOn = true; //scrollRect.horizontalNormalizedPosition = pageArray[index]; } public void MoveToPage1(bool isOn) { if (isOn) { targetHorizontalPosition = pageArray[0]; } } public void MoveToPage2(bool isOn) { if (isOn) { targetHorizontalPosition = pageArray[1]; } } public void MoveToPage3(bool isOn) { if (isOn) { targetHorizontalPosition = pageArray[2]; } } public void MoveToPage4(bool isOn) { if (isOn) { targetHorizontalPosition = pageArray[3]; } } }
說明:由於編輯器操作比較複雜,文字描述可能會讓讀者存在疑惑,因此我採用圖片解說方式向大家展示。如果對於這個方式有什麼意見或建議歡迎留言~
通過上面操作,你已經對UGUI有了更深入的瞭解,如果有什麼疑惑歡迎評論區留言。最後告訴你一個小祕密,學習unity一定要親自操作編輯器哦!