NGUI實現圖片左右無限滾動
阿新 • • 發佈:2019-01-11
開發專案的時候,通常要左右移動圖片選擇對應的場景或者關卡等等的,下面程式碼使用到了NGUI裡面的Tweenpositi,做了註釋,應該很容易看懂的
using UnityEngine; using System.Collections; public class Test : MonoBehaviour { public Transform[] sprites; /// <summary> /// 兩張圖片想個的距離 /// </summary> public float distance; /// <summary> /// 從左往右,螢幕中間圖片的序號作為開始序號 /// </summary> public int startNum; /// <summary> /// 當前選中的圖片序號 /// </summary> int chooseNum; TweenPosition tweenMove; // Use this for initialization void Start () { chooseNum = startNum; SetSpritePosition(startNum); tweenMove = this.GetComponent<TweenPosition>(); } int chooseState = 0;//向右-1,沒選0,向左1 // Update is called once per frame void Update () { //往左移 if (Input.GetKeyDown(KeyCode.F)) { chooseState = 1; chooseNum++; if (chooseNum >= sprites.Length) { chooseNum = 0; } tweenMove.to = new Vector3(-distance, 0, 0); tweenMove.tweenFactor = 0; tweenMove.PlayForward(); } //往右移 if (Input.GetKeyDown(KeyCode.A)) { chooseState = -1; chooseNum--; if (chooseNum < 0) { chooseNum = sprites.Length; } tweenMove.to = new Vector3(distance, 0, 0); tweenMove.tweenFactor = 0; tweenMove.PlayForward(); } if ((chooseState == 1 || chooseState == -1)&& tweenMove.tweenFactor >= 1f) { transform.localPosition = Vector3.zero; SetSpritePosition(chooseNum); } } void SetSpritePosition(int num)//輸入選中位置,進行圖片位置歸位 { for (int i = 0; i < sprites.Length; i++) { int gap = i - num; if (gap > (sprites.Length-3)) { gap = gap - sprites.Length; } if (gap < -(sprites.Length - 3)) { gap = gap + sprites.Length; } if (gap <= 2 && gap >= -2) { sprites[i].localPosition = new Vector3(gap * distance, sprites[i].localPosition.y, sprites[i].localPosition.z); } else { sprites[i].localPosition = new Vector3(3f * distance, sprites[i].localPosition.y, sprites[i].localPosition.z); } } } }