兴义之窗网站怎么做,什么网站可以免费做视频的软件下载,怎么做网站的访问量,销量不高的网站怎么做效果#xff1a; 场景结构#xff1a; 特殊物体#xff1a;panel下面用排列组件horizent layout group放置多个需要显示的面板#xff0c;用mask遮罩好。 主要思路#xff1a;
这次是要在最后一个toggle的地方#xff0c;依然向左滚动回1#xff0c;这是难点。因此实际…效果 场景结构 特殊物体panel下面用排列组件horizent layout group放置多个需要显示的面板用mask遮罩好。 主要思路
这次是要在最后一个toggle的地方依然向左滚动回1这是难点。因此实际上在4后面还增加了一个1面板的副本等滑动到4后面的1后直接重设整个panel的recttransform狸猫换太子视觉欺骗。
代码
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using DG.Tweening;
using UnityEngine;
using UnityEngine.UI;public class RollControlPanel : MonoBehaviour
{private RectTransform rollPanel;private Vector2 startPos;private ToggleGroup toggleGroup;private Toggle[] toggles;private int preToggleIndex 0;private int curToggleIndex 0;private int toggleCount;public float moveValue 756;private Tween slideTween;private ListVector2 panelPos new ListVector2();// Start is called before the first frame updatevoid Start(){rollPanel transform.Find(Mask/RollPanel).GetComponentRectTransform();toggleGroup transform.Find(TogglePanel/ToggleGroup).GetComponentToggleGroup();toggles transform.GetComponentsInChildrenToggle();startPos rollPanel.anchoredPosition;panelPos.Add(startPos);int panelCount rollPanel.childCount;for (int i 1; i panelCount; i){Vector2 tmp new Vector2(startPos.x - i * moveValue, startPos.y);panelPos.Add(tmp);}toggleCount toggles.Length;for (int i 0; i toggleCount; i){Toggle toggle toggles[i];toggles[i].onValueChanged.AddListener((arg0 {OnToggleOpen(toggle);}));}IEnumerator enumerator MovePanel();Coroutine setTogglesetToggle StartCoroutine(enumerator);}/// summary/// 只关注循环播放/// /summary/// returns/returnsIEnumerator MovePanel(){while (true){yield return new WaitForSeconds(2f);if (curToggleIndextoggleCount-1){//挪到最后一个也就是第一个的副本,偷偷重置位置slideTween rollPanel.DOAnchorPosX(panelPos[panelPos.Count - 1].x, 0.5f).OnComplete((() {rollPanel.anchoredPosition startPos;}));for (int i 0; i toggleCount; i){toggles[i].onValueChanged.RemoveAllListeners();}toggles[0].isOn true;for (int i 0; i toggleCount; i){Toggle toggle toggles[i];toggles[i].onValueChanged.AddListener((arg0 {OnToggleOpen(toggle);}));}preToggleIndex curToggleIndex;curToggleIndex 0;}else{//正常相对于当前位置移动curToggleIndex;slideTween rollPanel.DOAnchorPosX(panelPos[curToggleIndex].x, 0.5f);for (int i 0; i toggleCount; i){toggles[i].onValueChanged.RemoveAllListeners();}toggles[curToggleIndex].isOn true;for (int i 0; i toggleCount; i){Toggle toggle toggles[i];toggles[i].onValueChanged.AddListener((arg0 {OnToggleOpen(toggle);}));}preToggleIndex curToggleIndex;}}}// private void Update()// {// if (Input.GetKeyDown(KeyCode.K))// {// StopAllCoroutines();// slideTween.Kill();// rollPanel.anchoredPosition startPos;// }// }void OnToggleOpen(Toggle toggle){StopAllCoroutines();slideTween.Kill();if (toggle.isOn){for (int i 0; i toggleCount; i){if (toggle toggles[i]){curToggleIndex i;break;}}//直接切换rect位置rollPanel.anchoredPosition panelPos[curToggleIndex];IEnumerator enumerator MovePanel();Coroutine setTogglesetToggle StartCoroutine(enumerator);}}
}