// 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; } } } }
// 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(); } }
// 将一个棋子当前的状态信息装入展示卡牌当中 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); }