// Update is called once per frame
    void Update()
    {
        if (PieceEntity != null)
        {
            // 如果该UI对应的棋子不再存活则UI自行销毁
            if (PieceEntity.GetComponentInChildren <PieceStateController>().GetAliveUnitNum() == 0)
            {
                Destroy(this);
            }

            if (UnitHealthBar != null)
            {
                float HealthBarWidth = 71 * ThisPieceStateController.GetRationOfHealth();

                // 设置RectTransform的Width和Height数值
                UnitHealthBar.GetComponent <RectTransform>().sizeDelta = new Vector2(HealthBarWidth, 10);

                // 设置RectTransform的PosX, PosY 和PosZ数值
                UnitHealthBar.GetComponent <RectTransform>().localPosition = new Vector3((float)((-1) * ((71 - HealthBarWidth) / 2.0)), -30, 0);
            }
            else
            {
                UnitHealthBar = this.transform.Find("UnitHealthBar").gameObject;
            }

            if (IsMovingUpward == true)
            {
                float NewY = this.GetComponent <RectTransform>().localPosition.y + IntervalPerFrame;

                float NewX = CalculateY(NewY);

                this.GetComponent <RectTransform>().localPosition = new Vector3(NewX, NewY, 0);

                if (Mathf.Abs(TargetPosition.y - NewY) <= 0.1f)
                {
                    IsMovingUpward = false;
                }
            }

            if (IsMovingDownward == true)
            {
                float NewY = this.GetComponent <RectTransform>().localPosition.y + IntervalPerFrame;

                float NewX = this.GetComponent <RectTransform>().localPosition.x;

                this.GetComponent <RectTransform>().localPosition = new Vector3(NewX, NewY, 0);

                if (Mathf.Abs(TargetPosition.y - NewY) <= 0.1f)
                {
                    IsMovingDownward = false;
                }
            }
        }
    }
Exemple #2
0
    // Update is called once per frame
    void Update()
    {
        // 棋子生命值状态更新
        //=========================================================================================================================
        if (PieceUIBase != null && PieceUIBaseVisibale == true)
        {
            //PieceUIBase.fillAmount -= Time.deltaTime / 50.0f;
            PieceUIBase.gameObject.transform.position = Camera.main.WorldToScreenPoint(transform.position);

            float HealthBarWidth = 75 * ThisPieceStateController.GetRationOfHealth();

            // 设置RectTransform的Width和Height数值
            HealBar.GetComponent <RectTransform>().sizeDelta = new Vector2(HealthBarWidth, 10);

            // 设置RectTransform的PosX, PosY 和PosZ数值
            HealBar.GetComponent <RectTransform>().localPosition = new Vector3((float)((-1) * ((75 - HealthBarWidth) / 2.0)), -35, 0);
        }
        //=========================================================================================================================

        if (TimeAfterLastPopout >= PopoutInterval)
        {
            if (PopoutTextRequestList.Count > 0)
            {
                CreatePopoutText(PopoutTextRequestList[0]);
                PopoutTextRequestList[0] = null;
                PopoutTextRequestList.Remove(PopoutTextRequestList[0]);

                TimeAfterLastPopout = 0.0f;
            }
        }
        else
        {
            TimeAfterLastPopout += Time.deltaTime;
        }

        if (Input.GetKeyDown(KeyCode.L))
        {
            PopoutTextRequest NewPopoutRequest = new PopoutTextRequest();

            NewPopoutRequest.SetMainText("999");

            AddPopoutTextRequest(NewPopoutRequest);

            HidePieceUIBase();
        }
    }
Exemple #3
0
    // 将一个棋子当前的状态信息装入展示卡牌当中
    public void LoadInfoFromPiece(GameObject ParaPiece)
    {
        PieceInfoController  ParaPieceInfoController  = ParaPiece.GetComponentInChildren <PieceInfoController>();
        PieceStateController ParaPieceStateController = ParaPiece.GetComponentInChildren <PieceStateController>();

        CardNameText.GetComponent <Text>().text = ParaPieceInfoController.GetPieceName();

        if (ParaPieceStateController.GetCardMainImage() != null)
        {
            MainImage.GetComponent <RawImage>().texture = ParaPieceStateController.GetCardMainImage();
        }
        else
        {
        }

        //MainImage.GetComponent<RawImage>().texture =
        // 也许在单位数目为1的时候英雄棋子和普通杂兵棋子需要区别对待(英雄类棋子直接隐藏单位数目图标和单位数目文本)
        PieceUnitNumText.GetComponent <Text>().text = (ParaPieceStateController.GetAliveUnitNum()).ToString();
        MineralText.GetComponent <Text>().text      = (ParaPieceInfoController.GetPieceCostMineral()).ToString();
        GasText.GetComponent <Text>().text          = (ParaPieceInfoController.GetPieceCostGas()).ToString();

        List <string> CardDescriptionItemList = ParaPieceStateController.GetCardDescriptionItemList();

        int CharacterNum = 0;

        if (CardDescriptionItemList != null)
        {
            //Debug.Log("get it");

            for (int i = 0; i < CardDescriptionItemList.Count; i++)
            {
                CharacterNum += CardDescriptionItemList[i].Length;
            }

            // 如果描述项字符总量过多则需要调整文本中的字体大小
            if (CharacterNum <= 56)
            {
                string Res = "";

                // 组装卡牌描述区文本,每个描述项之间用一个空格隔开
                for (int i = 0; i < CardDescriptionItemList.Count; i++)
                {
                    if (i == CardDescriptionItemList.Count - 1)
                    {
                        Res += CardDescriptionItemList[i];
                    }
                    else
                    {
                        Res += (CardDescriptionItemList[i] + " ");
                    }
                }

                // 将卡牌描述区文本设置到text属性
                CardDescription.transform.Find("CardDescriptionText").gameObject.GetComponent <Text>().text = Res;
            }
        }

        // 更新生命值状态条
        float HealthPercentage = ParaPieceStateController.GetRationOfHealth();

        float HealthBarWidth    = 145 * HealthPercentage;
        float HealthBarPosition = 145 * (1 - HealthPercentage);

        HealthBar.GetComponent <RectTransform>().sizeDelta     = new Vector2(HealthBarWidth, 6);
        HealthBar.GetComponent <RectTransform>().localPosition = new Vector3((float)(HealthBarPosition / 2.0), 0, 0);
    }