【Unity教程】从0编程制作类银河恶魔城游戏_哔哩哔哩_bilibili
教程源地址:https://www.udemy.com/course/2d-rpg-alexdev/
本章节实现了把鼠标放到属性上面就会显示属性的作用
UI_StatToolTip.cs
这段代码实现了一个UI提示框(ToolTip)功能,用于显示和隐藏某个对象的描述信息。主要通过 TextMeshProUGUI
组件在Unity中显示文字,来实现动态的文本显示效果。
方法分析:
-
ShowStatToolTip(string _text):
- 作用:该方法用来展示描述文本。传入一个字符串
_text
,然后将这个文本赋值给description.text
,从而更新显示的文本内容。 gameObject.SetActive(true)
:启用当前 GameObject,使 Tooltip 可见。
- 作用:该方法用来展示描述文本。传入一个字符串
-
HideStatToolTip():
- 作用:该方法用来隐藏 Tooltip。在这个方法中,
description.text = "";
清空文本内容,gameObject.SetActive(false)
隐藏 Tooltip。
- 作用:该方法用来隐藏 Tooltip。在这个方法中,
using System.Collections;
using System.Collections.Generic;
using TMPro;
using UnityEngine;public class UI_StatToolTip : MonoBehaviour
{[SerializeField] private TextMeshProUGUI description;public void ShowStatToolTip(string _text){description.text = _text;gameObject.SetActive(true);}public void HideStatToolTip(){description.text = "";gameObject.SetActive(false);}
}
UI_StatSlot.cs
总结(更新部分):
UpdateStatValueUI()
:更新玩家状态值在UI中的显示,根据不同的statType
更新对应的数值。OnPointerEnter(PointerEventData eventData)
:鼠标悬停时,显示状态描述的提示框。OnPointerExit(PointerEventData eventData)
:鼠标离开时,隐藏状态描述的提示框。
using TMPro;
using UnityEngine;
using UnityEngine.EventSystems;//2024年11月12日
public class UI_StatSlot : MonoBehaviour,IPointerEnterHandler,IPointerExitHandler
{private UI ui;[SerializeField] private string statName;[SerializeField] private StatType statType;//用来存储当前状态的类型[SerializeField] private TextMeshProUGUI statValueText;//负责显示当前状态值[SerializeField] private TextMeshProUGUI statNameText;//用来显示状态名称[TextArea][SerializeField] private string statDescription;//状态描述private void OnValidate(){gameObject.name = "Stat - " + statName;//在场景中及时更新内容if (statNameText != null)statNameText.text = statName;}void Start(){UpdateStatValueUI();ui= GetComponentInParent<UI>();}public void UpdateStatValueUI(){PlayerStats playerStats = PlayerManager.instance.player.GetComponent<PlayerStats>();if (playerStats != null){statValueText.text = playerStats.GetStat(statType).GetValue().ToString();if(statType == StatType.health)statValueText.text = playerStats.GetMaxHealthValue().ToString();if (statType == StatType.damage)statValueText.text = (playerStats.damage.GetValue() + playerStats.strength.GetValue()).ToString();if (statType == StatType.critPower)statValueText.text = (playerStats.critPower.GetValue() + playerStats.strength.GetValue()).ToString();if (statType == StatType.critChance)statValueText.text = (playerStats.critChance.GetValue() + playerStats.agility.GetValue()).ToString();if (statType == StatType.evasion)statValueText.text = (playerStats.evasion.GetValue() + playerStats.agility.GetValue()).ToString();if (statType == StatType.magicRes)statValueText.text = (playerStats.magicResistance.GetValue() + playerStats.intelligence.GetValue() * 3).ToString();}}public void OnPointerEnter(PointerEventData eventData){ui.statToolTip.ShowStatToolTip(statDescription);}public void OnPointerExit(PointerEventData eventData){ui.statToolTip.HideStatToolTip();}
}