网站推广外包公司,如何备份网站 整站,单位如何申请域名,wordpress主题cxudy如图所示#xff0c;可设置轮播间隔#xff0c;可左右滑动进行轮播 1.在UGUI创建个Image#xff0c;添加自动水平组件 2.添加并配置脚本 3.代码如下#xff0c;都有注释
using UnityEngine;
using UnityEngine.UI;public class IndicatorManager : MonoBehaviour
{public …如图所示可设置轮播间隔可左右滑动进行轮播 1.在UGUI创建个Image添加自动水平组件 2.添加并配置脚本 3.代码如下都有注释
using UnityEngine;
using UnityEngine.UI;public class IndicatorManager : MonoBehaviour
{public GameObject indicatorPrefab; // 轮播物体的预制体public Transform indicatorParent; // 轮播物体的父级对象private int pageCount 5; // 页面数量private GameObject[] indicatorsArray; // 存储所有轮播物体的数组private int currentPage 0; // 当前页面索引private Vector2 slideStartPosition; // 记录滑动的起始点private bool isSliding false; // 标志是否正在执行滑动操作private bool isAutoSlidingPaused false; // 标志是否暂停自动轮播private float autoSlideInterval 3f; // 自动轮播间隔时间private float autoSlideTimer 0f; // 计时器用于自动轮播private void Start(){CreateIndicators();UpdateIndicators();}private void Update(){// 更新计时器UpdateTimer();// 检测左右滑动手势DetectSwipe();}// 创建页面指示器private void CreateIndicators(){indicatorsArray new GameObject[pageCount];for (int i 0; i pageCount; i){GameObject indicator Instantiate(indicatorPrefab, indicatorParent);indicatorsArray[i] indicator;}}// 设置当前页面并更新页面指示器private void SetCurrentPage(int pageIndex){currentPage Mathf.Clamp(pageIndex, 0, pageCount - 1);UpdateIndicators();}// 更新页面指示器的显示状态private void UpdateIndicators(){for (int i 0; i pageCount; i){// 将当前页面的轮播物体颜色设置为白色其他页面的轮播物体颜色设置为灰色indicatorsArray[i].GetComponentImage().color (i currentPage) ? Color.white : new Color(0.5f, 0.5f, 0.5f, 0.5f);}}// 自动轮播方法private void AutoSlide(){// 如果没有正在执行滑动操作且未暂停自动轮播则切换到下一个页面if (!isSliding !isAutoSlidingPaused){SetCurrentPage((currentPage 1) % pageCount);}}// 检测左右滑动手势private void DetectSwipe(){if (Input.GetMouseButtonDown(0)){// 记录滑动的起始点if (IsInsideParent(Input.mousePosition)){slideStartPosition Input.mousePosition;}}else if (Input.GetMouseButton(0)){float deltaX Input.mousePosition.x - slideStartPosition.x;// 如果没有正在执行滑动操作且滑动距离足够大则切换页面if (!isSliding !isAutoSlidingPaused Mathf.Abs(deltaX) 50f IsInsideParent(Input.mousePosition)){int direction (deltaX 0) ? -1 : 1;SetCurrentPage((currentPage direction pageCount) % pageCount);// 标志为正在执行滑动操作isSliding true;// 暂停自动轮播PauseAutoSlide();}}else if (Input.GetMouseButtonUp(0)){// 重置滑动标志isSliding false;// 恢复自动轮播ResumeAutoSlide();}}// 判断坐标是否在父物体内private bool IsInsideParent(Vector2 position){RectTransform parentRect indicatorParent.GetComponentRectTransform();return RectTransformUtility.RectangleContainsScreenPoint(parentRect, position);}// 更新计时器private void UpdateTimer(){// 如果没有正在执行滑动操作且未暂停自动轮播则更新计时器if (!isSliding !isAutoSlidingPaused){autoSlideTimer Time.deltaTime;// 如果计时器超过轮播间隔时间则执行自动轮播if (autoSlideTimer autoSlideInterval){AutoSlide();// 重置计时器autoSlideTimer 0f;}}}// 暂停自动轮播private void PauseAutoSlide(){isAutoSlidingPaused true;}// 恢复自动轮播并重置计时器private void ResumeAutoSlide(){isAutoSlidingPaused false;autoSlideTimer 0f;}
}