public Vector2 offset = new Vector2(10, 10); //加上一个偏移,不被鼠标挡住 public void ShowTips(Item item, ShowPrice showPrice = ShowPrice.None) { //Debug.Log(pos); if (item == null) { gameObject.SetActive(false); } else { UIMouseItem uiMouseItem = Helper.GetUIMouseItem(); if (!uiMouseItem.hasItem) //鼠标没有挂物品时,才显示提示 { gameObject.SetActive(true); GenTips(item, showPrice); //生成提示 } } }
void GenTips(Item item, ShowPrice showPrice = ShowPrice.None) { //name StringBuilder build = new StringBuilder(); switch (item.Type.quality) { case ItemQuality.White: build.Append("<color=white>" + item.Type.itemName); break; case ItemQuality.Green: build.Append("<color=green>" + item.Type.itemName); break; case ItemQuality.Blue: build.Append("<color=blue>" + item.Type.itemName); break; case ItemQuality.Golden: build.Append("<color=orange>" + item.Type.itemName); break; case ItemQuality.Red: build.Append("<color=red>" + item.Type.itemName); break; case ItemQuality.Purple: build.Append("<color=purple>" + item.Type.itemName); break; default: build.Append("<color=white>" + item.Type.itemName); //默认用白色 break; } //叠加数量 if (item.Type.CanStack) { build.Append(" (" + item.amount + ")"); } build.Append("</color>"); build.Append("\n"); //这里附加装备信息 if (item.Type.IsWeapon) { WeaponProperties weaponProp = EquipTable.GetWeaponProp(item.Type.weaponId); if (weaponProp == null) { } else { build.Append("<color=white>"); //攻击 build.Append(string.Format(TextResources.atkFormat, weaponProp.minAtkBonus, weaponProp.maxAtkBonus)); //攻击速率,为间隔的倒数 build.Append(string.Format(TextResources.atkInvervalFormat, 1 / weaponProp.atkInterval)); if (weaponProp.crtlChanceBonus != 0) { //暴击率 build.Append(string.Format(TextResources.crtlChanceFormat, Mathf.Round(weaponProp.crtlChanceBonus * 100))); } if (weaponProp.crtlRateBonus != 0) { //暴击伤害 build.Append(string.Format(TextResources.crtlRateFormat, Mathf.Round(weaponProp.crtlRateBonus * 100))); } if (weaponProp.rcrBonus != 0) { //rcr build.Append(string.Format(TextResources.rcrFormat, Mathf.Round(weaponProp.rcrBonus * 100))); } build.Append("</color>"); } } else if (item.Type.IsArmor) { ArmorProperties armorProp = EquipTable.GetArmorProp(item.Type.armorId); if (armorProp == null) { } else { build.Append("<color=white>"); //防御 build.Append(string.Format(TextResources.defFormat, armorProp.defBonus)); if (armorProp.hpBonus != 0) { //血量 build.Append(string.Format(TextResources.hpFormat, armorProp.hpBonus)); } if (armorProp.minAtkBonus != 0 || armorProp.maxAtkBonus != 0) { //攻击 build.Append(string.Format(TextResources.atkFormat, armorProp.minAtkBonus, armorProp.maxAtkBonus)); } if (armorProp.atkSpdBonus != 0) { //攻速 build.Append(string.Format(TextResources.atkSpdFormat, Mathf.Round((armorProp.atkSpdBonus * 100)))); } if (armorProp.spdScaleBonus != 0) { //速度 build.Append(string.Format(TextResources.spdFormat, Mathf.Round(armorProp.spdScaleBonus * 100))); } if (armorProp.jmpScaleBonus != 0) { //跳跃 build.Append(string.Format(TextResources.jmpFormat, Mathf.Round(armorProp.jmpScaleBonus * 100))); } if (armorProp.crtlChanceBonus != 0) { //暴击率 build.Append(string.Format(TextResources.crtlChanceFormat, Mathf.Round(armorProp.crtlChanceBonus * 100))); } if (armorProp.crtlRateBonus != 0) { //暴击伤害 build.Append(string.Format(TextResources.crtlRateFormat, Mathf.Round(armorProp.crtlRateBonus * 100))); } if (armorProp.rcrBonus != 0) { //rcr build.Append(string.Format(TextResources.rcrFormat, Mathf.Round(armorProp.rcrBonus * 100))); } build.Append("</color>"); } } //附魔属性 //comment build.Append(item.Type.comment); build.Append("\n"); //usability if (item.Type.IsEquipment) { build.Append("equipment"); } if (item.Type.IsConsumable) { build.Append("&consumable"); } //if (item.Type.IsMaterial) //{ // build.Append("&material"); //} //价格显示 switch (showPrice) { case ShowPrice.None: break; case ShowPrice.Buy: build.Append("\n"); build.Append("<color=yellow>"); build.Append("买价: " + item.buyPrice); build.Append("</color>"); break; case ShowPrice.Sell: build.Append("\n"); build.Append("<color=white>"); build.Append("卖价: " + item.sellPrice); build.Append("</color>"); break; } txt.text = build.ToString(); }