internal void SetUIInfo(GuideLittleStepDefine guideLittleStepDefine, GameObject transOrigin) { this.guideLittleStepDefine = guideLittleStepDefine; this.transOrigin = transOrigin; SetFingerPos(); GoUIGuide.GetComponent <RootFingerComponent>().SetFinger(guideLittleStepDefine.isRightFinger); isFollow = true; if (guideLittleStepDefine.Id == 10019)//大富翁骰子界面不跟随 { isFollow = false; } }
//用户操作后设置小步骤完成 public void SetLittleStepFinish() { isCurrStepGuiding = false; int idLittleStep = CurrExecuteGuideLittleStepDefine.Id; uiGuideComponent.GoUIGuide.SetActive(false); //标记小步骤完成 GuideLittleStepDefine guideLittleStepDefine = listGuideLittleStep.Find(x => x.Id == idLittleStep); if (guideLittleStepDefine != null) { guideLittleStepDefine.IsFinish = true; } SaveLittleStepToServer(idLittleStep); //同一个引导不同地方触发的,完成一个都算完成 switch (idLittleStep) { case 10007: //标记小步骤完成 GuideLittleStepDefine guideLittleStepDefine11007 = listGuideLittleStep.Find(x => x.Id == 11007); if (guideLittleStepDefine11007 != null) { guideLittleStepDefine11007.IsFinish = true; } SaveLittleStepToServer(11007); break; case 11007: //标记小步骤完成 GuideLittleStepDefine guideLittleStepDefine10007 = listGuideLittleStep.Find(x => x.Id == 10007); if (guideLittleStepDefine10007 != null) { guideLittleStepDefine10007.IsFinish = true; } SaveLittleStepToServer(10007); break; default: break; } }
//小步骤 private async void BeginCurrGuideStep(GuideLittleStepDefine guideLittleStepDefine) { if (CurrExecuteGuideLittleStepId == guideLittleStepDefine.Id) { //同一个id的新手引导不重复触发 return; } //特殊处理 if (CurrExecuteGuideLittleStepId > guideLittleStepDefine.Id)//后边来的先触发,前边的不触发了 { //后边的条件不满足了,要触发前边的 CurrExecuteGuideLittleStepId = 0; return; } isCurrStepGuiding = true; StaticData.DebugGreen($"======================触发引导:{guideLittleStepDefine.Id}"); CurrExecuteGuideLittleStepDefine = guideLittleStepDefine; CurrExecuteGuideLittleStepId = CurrExecuteGuideLittleStepDefine.Id; //面板 if (guideLittleStepDefine.isPanelAnim) { var goGuidePanel = await UIComponent.CreateUIAsync(guideLittleStepDefine.PrefabPanelAnim, isGuideCanvas : true); goGuidePanel.GetComponent <GuidePanelAnimComponent>().SetInfo(guideLittleStepDefine.PrefabPanelAnim); return; } //等对应的组件找到 int idCurrLittleStep = guideLittleStepDefine.Id; GameObject targetGameObject = null; while (targetGameObject == null) { await UniTask.DelayFrame(1); targetGameObject = GameObject.Find(guideLittleStepDefine.SubPath); //针对Tile的对象池特殊处理 if (guideLittleStepDefine.Id == 10002) { if (targetGameObject != null) { var tiles = targetGameObject.transform.parent.GetComponentsInChildren <TileComponent>(); targetGameObject = null; if (tiles.Length > 1) { targetGameObject = tiles[0].gameObject; } } } if (targetGameObject != null && !targetGameObject.activeInHierarchy) { //如果找到了控件,但是没有激活,重新找 targetGameObject = null; } } switch (guideLittleStepDefine.Id) { case 10002: var tiles = targetGameObject.transform.parent.GetComponentsInChildren <TileComponent>(); List <TileComponent> listTiles = new List <TileComponent>(); for (int i = 0; i < tiles.Length; i++) { if (tiles[i].gameObject.activeInHierarchy && tiles[i].regionId == 1) //第一个区域上的 { listTiles.Add(tiles[i]); } } //找区域1上最左侧的土地 listTiles.Sort((a, b) => a.gameObject.transform.localPosition.x.CompareTo(b.gameObject.transform.localPosition.x)); targetGameObject = listTiles[0].gameObject; break; case 10003: break; case 10004: var tileSeed = Root2dSceneManager._instance.GetTileSeed(); targetGameObject = tileSeed.gameObject; break; case 10005: var tileRipe = Root2dSceneManager._instance.GetTileRipe(); targetGameObject = tileRipe.gameObject; break; case 10011: var goodCom = targetGameObject.transform.GetComponentInParent <UIPoolItemGood>(); targetGameObject = goodCom.transform.parent.GetChild(1).GetComponent <UIPoolItemGood>()._buyBtn.gameObject; break; default: break; } //找到了组件 uiGuideComponent.SetUIInfo(guideLittleStepDefine, targetGameObject); uiGuideComponent.GoUIGuide.SetActive(true); }