65 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			C#
		
	
	
	
		
		
			
		
	
	
			65 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			C#
		
	
	
	
|  | using System; | |||
|  | using System.Collections.Generic; | |||
|  | using UnityEngine; | |||
|  | 
 | |||
|  | public class PanelGuide : BasePanel | |||
|  | { | |||
|  |     public Action<int> DelStepDone; | |||
|  |     public Action DelGuideFinish; | |||
|  | 
 | |||
|  |     [SerializeField] Transform mCtnGuide; | |||
|  | 
 | |||
|  |     private int mGuideIndex; | |||
|  |     private int mCurStepIndex = -1; | |||
|  |     private List<GuideStep> mSteps; | |||
|  | 
 | |||
|  |     public void InitGuide(int pGuideIndex) | |||
|  |     { | |||
|  |         mGuideIndex = pGuideIndex; | |||
|  | 
 | |||
|  |         for (int i = 0; i < mCtnGuide.childCount; i++) | |||
|  |         { | |||
|  |             mCtnGuide.GetChild(i).gameObject.SetActive(i == pGuideIndex); | |||
|  |         } | |||
|  | 
 | |||
|  |         mSteps = Utils.GetChildListFirstLayer<GuideStep>(mCtnGuide.GetChild(pGuideIndex)); | |||
|  |         for (int i = 0; i < mSteps.Count; i++) | |||
|  |         { | |||
|  |             mSteps[i].DelStepDone = OnStepDone; | |||
|  |             mSteps[i].InitStep(i); | |||
|  |         } | |||
|  | 
 | |||
|  |         mCurStepIndex = -1; | |||
|  |     } | |||
|  | 
 | |||
|  |     public void NextStep(Vector3 pScreenPos = default) | |||
|  |     { | |||
|  |         mCurStepIndex++; | |||
|  |         if (mCurStepIndex < mSteps.Count) | |||
|  |         { | |||
|  |             mSteps[mCurStepIndex].StartStep(pScreenPos); | |||
|  |         } | |||
|  |         else | |||
|  |         { | |||
|  |             DelGuideFinish?.Invoke(); | |||
|  |         } | |||
|  |     } | |||
|  | 
 | |||
|  |     public void FinishCurrentStep() | |||
|  |     { | |||
|  |         if (mCurStepIndex >= 0 && mCurStepIndex < mSteps.Count) | |||
|  |         { | |||
|  |             mSteps[mCurStepIndex].FinishStep(); | |||
|  |         } | |||
|  |     } | |||
|  | 
 | |||
|  |     private void OnStepDone(int pIndex, bool pAutoNext) | |||
|  |     { | |||
|  |         DelStepDone?.Invoke(pIndex); | |||
|  | 
 | |||
|  |         if (pAutoNext) | |||
|  |         { | |||
|  |             NextStep(); | |||
|  |         } | |||
|  |     } | |||
|  | } |