using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class DungeonProcess : MonoBehaviour { public Slider m_slider; public GameObject go_ExtarMark; List list_mark = new List(); float m_Speed = 0.2f, nextValue = 0f; GameObject Get_Mark() { for (int i = 0; i < list_mark.Count; i++) { if (!list_mark[i].activeSelf) return list_mark[i]; } list_mark.Add(DSUtil.Get_Clone(go_ExtarMark, go_ExtarMark.transform.parent)); return list_mark[list_mark.Count - 1]; } public void Set_ExtraMark() { m_slider.value = nextValue = 0f; list_mark.ForEach(f => f.SetActive(false)); var lst = MyValue.m_MyStageData.m_StageData.list_Nodedata; for (int i = 0; i < lst.Count; i++) { if (lst[i].m_Type == eStageNodeType.Campfire) { var mark = Get_Mark(); var worldpos = DSUtil.GetHypotheticalHandleWorldPosition(m_slider, i / (float)(lst.Count)); var rt = mark.transform as RectTransform; var anchorpos = DSUtil.Get_UIPos(worldpos, rt); rt.anchoredPosition = new Vector2(anchorpos.x, rt.anchoredPosition.y); mark.SetActive(true); } } } public void Set() { if (MyValue.m_MyStageData.m_NodeIndex == -1) nextValue = 0f; else nextValue = MyValue.m_MyStageData.m_NodeIndex / (float)MyValue.m_MyStageData.m_StageData.list_Nodedata.Count; } private void Update() { if (nextValue > m_slider.value) { m_slider.value += Time.deltaTime * m_Speed; if (m_slider.value > nextValue) m_slider.value = nextValue; } else if (nextValue < m_slider.value) { m_slider.value -= Time.deltaTime * m_Speed; if (m_slider.value < nextValue) m_slider.value = nextValue; } } }