Exemple #1
0
 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;
     }
 }
Exemple #2
0
    //用户操作后设置小步骤完成
    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;
        }
    }
Exemple #3
0
    //小步骤
    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);
    }