当前位置: 首页 > article >正文

Unity类银河战士恶魔城学习总结(P127 Stat ToolTip属性提示)

【Unity教程】从0编程制作类银河恶魔城游戏_哔哩哔哩_bilibili

教程源地址:https://www.udemy.com/course/2d-rpg-alexdev/

本章节实现了把鼠标放到属性上面就会显示属性的作用

UI_StatToolTip.cs

这段代码实现了一个UI提示框(ToolTip)功能,用于显示和隐藏某个对象的描述信息。主要通过 TextMeshProUGUI 组件在Unity中显示文字,来实现动态的文本显示效果。

方法分析:

  1. ShowStatToolTip(string _text)

    • 作用:该方法用来展示描述文本。传入一个字符串 _text,然后将这个文本赋值给 description.text,从而更新显示的文本内容。
    • gameObject.SetActive(true):启用当前 GameObject,使 Tooltip 可见。
  2. HideStatToolTip()

    • 作用:该方法用来隐藏 Tooltip。在这个方法中,description.text = ""; 清空文本内容,gameObject.SetActive(false) 隐藏 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

总结(更新部分):

  1. UpdateStatValueUI():更新玩家状态值在UI中的显示,根据不同的 statType 更新对应的数值。
  2. OnPointerEnter(PointerEventData eventData):鼠标悬停时,显示状态描述的提示框。
  3. 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();
    }
}


http://www.kler.cn/a/396277.html

相关文章:

  • 探索IDE的无限可能:使用技巧与插件推荐
  • 【route】route add命令详解
  • 【Pikachu】任意文件上传实战
  • 计算机视觉 ---常见图像文件格式及其特点
  • Kafka-Eagle的配置——kafka可视化界面
  • java算法性能调优:详尽探讨时间复杂度与空间复杂度的分析与优化“
  • 企业BI工具如何选择?主流5款BI工具多维对比
  • Opengl光照测试
  • Vue和Vue-Element-Admin(十三):基于vue2比较学习vue3
  • 基于Python 和 pyecharts 制作招聘数据可视化分析大屏
  • windows系统开发环境使用docker打包Django程序部署至服务器Ubuntu系统中
  • PDF编辑的好东西
  • 【动手学电机驱动】 STM32-FOC(7)MCSDK Pilot 上位机控制与调试
  • vue3:computed
  • 腾讯IM web版本实现迅飞语音听写(流式版)
  • Vagrant 没了 VirtualBox 的话可以配 Qemu
  • 自动驾驶系列—自动驾驶中的短距离感知:超声波雷达的核心技术与场景应用
  • Linux:进程间通信
  • 每日一练 | 包过滤防火墙的工作原理
  • 什么是C++中的常量表达式?有什么用途?
  • 三菱变频器A800逆变器模块及整流桥模块的检查方法
  • 【计算机网络】TCP协议特点1
  • 前端知识点---Window对象(javascript)了解
  • mybatis-spring-boot-starter和mybatis-plus-spring-boot3-starter冲突
  • 更改 Jupyter Notebook 中文件的存放位置
  • PHP承兑汇票识别API-承兑汇票如何快速识别-私有化部署集成