// 当前单位接收伤害 public void ReceiveDamage(Unit AttackUnit, int DamageAmount) { // 伤害响应部分 // 实际伤害结算 int CurrentHealth = GetCurrentHealth(); if (CurrentHealth - DamageAmount <= 0) { CurrentHealth = 0; IsAlive = false; // 每当一个棋子包含的单位不在存活就需要检查棋子是否还存活 PieceStateController TmpPieceStateController = LocatePiece.GetComponentInChildren <PieceStateController>(); // 如果棋子包含的存活单位为0则判定棋子不再存活 if (TmpPieceStateController.GetAliveUnitNum() == 0) { Debug.Log("Piece is not alive."); // 调用棋子亡语函数 TmpPieceStateController.PieceDead(AttackUnit); } } else { CurrentHealth -= DamageAmount; } SetCurrentHealth(CurrentHealth); }
// 将一个棋子当前的状态信息装入展示卡牌当中 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); }