1、創建兩個Image,修改第一個Image名稱為 Background,把第二個Image放入 Background 下 結構如下:
2、Background 的圖片設置為 Back_04,把 Background 下的 Image 設置為 Joystick_04 效果如下:
3、代碼
1 using System.Collections; 2 using System.Collections.Generic; 3 using UnityEngine; 4 using UnityEngine.EventSystems; 5 using UnityEngine.UI; 6 7 public class ScrollCircle : ScrollRect 8 { 9 // 半徑 10 private float _mRadius = 0f; 11 12 // 距離 13 private const float Dis = 0.5f; 14 15 protected override void Start() 16 { 17 base.Start(); 18 19 // 能移動的半徑 = 搖桿的寬 * Dis 20 _mRadius = content.sizeDelta.x * Dis; 21 } 22 23 public override void OnDrag(PointerEventData eventData) 24 { 25 base.OnDrag(eventData); 26 27 // 獲取搖桿,根據錨點的位置。 28 var contentPosition = content.anchoredPosition; 29 30 // 判斷搖桿的位置 是否大於 半徑 31 if (contentPosition.magnitude > _mRadius) 32 { 33 // 設置搖桿最遠的位置 34 contentPosition = contentPosition.normalized * _mRadius; 35 SetContentAnchoredPosition(contentPosition); 36 } 37 38 // 最后 v2.x/y 就跟 Input中的 Horizontal Vertical 獲取的值一樣 39 var v2 = content.anchoredPosition.normalized; 40 } 41 }
4、最后把 ScrollCircle 放到 Background 上,把Image拖入content中,完成。