73 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			C#
		
	
	
	
			
		
		
	
	
			73 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			C#
		
	
	
	
| using System.Collections;
 | |
| using System.Collections.Generic;
 | |
| using UnityEngine;
 | |
| 
 | |
| public class PageSpot : MonoBehaviour
 | |
| {
 | |
|     [SerializeField] GameObject mTplSpot;
 | |
| 
 | |
|     private Transform mCtn;
 | |
|     private List<GameObject> mLightSpots;
 | |
|     private List<GameObject> mSpotList;
 | |
| 
 | |
|     private int mSpotCount;
 | |
| 
 | |
|     private void Awake()
 | |
|     {
 | |
|         mCtn = transform;
 | |
|     }
 | |
| 
 | |
|     public void Init(int pTotalCount)
 | |
|     {
 | |
|         mSpotCount = pTotalCount;
 | |
|         mLightSpots = new List<GameObject>();
 | |
| 
 | |
|         for (int i = 0; i < pTotalCount; i++)
 | |
|         {
 | |
|             GameObject tSpot = GetSpot(i);
 | |
|             mLightSpots.Add(tSpot.transform.GetChild(0).gameObject);
 | |
|         }
 | |
| 
 | |
|         HideUnused();
 | |
|     }
 | |
| 
 | |
|     public void SetPageIndex(int pCurrentIndex)
 | |
|     {
 | |
|         for(int i = 0; i < mLightSpots.Count; i++)
 | |
|         {
 | |
|             mLightSpots[i].SetActive(pCurrentIndex == i);
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     private GameObject GetSpot(int pSpotIndex)
 | |
|     {
 | |
|         if (mSpotList == null)
 | |
|         {
 | |
|             mSpotList = new List<GameObject>();
 | |
|         }
 | |
| 
 | |
|         GameObject tCell = null;
 | |
|         if (pSpotIndex < mSpotList.Count)
 | |
|         {
 | |
|             tCell = mSpotList[pSpotIndex];
 | |
|         }
 | |
|         else
 | |
|         {
 | |
|             tCell = Instantiate(mTplSpot, mCtn);
 | |
|             tCell.transform.localScale = Vector3.one;
 | |
|             mSpotList.Add(tCell);
 | |
|         }
 | |
| 
 | |
|         tCell.SetActive(true);
 | |
| 
 | |
|         return tCell;
 | |
|     }
 | |
| 
 | |
|     private void HideUnused()
 | |
|     {
 | |
|         for (int i = mSpotCount; i < mSpotList.Count; i++)
 | |
|         {
 | |
|             mSpotList[i].SetActive(false);
 | |
|         }
 | |
|     }
 | |
| } |