赞
踩
UI创建Text下面创建Image和Text,将ToolTip的中心点移至左上角,再ToolTip添加Content Size Fitter组件,H和V调为V Size,如图
给ToolTip添加脚本和Canvas Group组件,控制其隐藏和显示:
- using System.Collections;
- using System.Collections.Generic;
- using UnityEngine;
- using UnityEngine.EventSystems;
- using UnityEngine.UI;
-
-
- public class ToolTip : MonoBehaviour
- {
-
- private Text TipText;
- private Text Content;
- private CanvasGroup canvasGroup;
- private float AlphaValue = 0;
- private float Smooth = 8;
-
- private void Start()
- {
- TipText = GetComponent<Text>();
- Content = transform.Find("Content").GetComponent<Text>();
- canvasGroup = GetComponent<CanvasGroup>();
- Hide();
- }
-
- // Update is called once per frame
- void Update () {
- if (canvasGroup.alpha != AlphaValue)
- {
- //canvasGroup.alpha = Mathf.Lerp(canvasGroup.alpha, AlphaValue, Smooth * Time.deltaTime );
- //if (Mathf.Abs(canvasGroup.alpha - AlphaValue) <= 0.01f)
- canvasGroup.alpha = AlphaValue;
- }
- }
-
- public void Show(string str)
- {
- TipText.text = str;
- Content.text = str;
- AlphaValue = 1;
- }
-
- public void Hide()
- {
- AlphaValue = 0;
- }
-
- public void SetToolTipPosition(Vector3 pos)
- {
- transform.localPosition = pos;
- }
- }
如何在碰到物品槽时显示物品信息?
在Slot中引入接口 IPointEnterHandler 和 IPointExitHandler
using UnityEngine.EventSystems;
Slot类中通过InventoryManager单例类的调用ToolTip显示和隐藏的方法来显示(当Slot有子物体,即有物品时调用):
由InventoryManager管理ToolTip,在InventoryManager中添加调用ToolTip显示和隐藏的方法
声明一个 private ToolTip toolTip;
要先在Start中获取 toolTip = GameObject.FindObjectOfType<ToolTip>();
写入一个Bool,用于判断是否显示ToolTips:
物品显示的信息在OnPointEnter中调用Slot自身的ItemUI身上的Item中的GetToolTipContent方法
在Item中写入GetToolTipContent方法:(后续再进行扩展)
最后,将物品信息跟随鼠标移动显示:
在InventoryManager中更新鼠标位置,在ToolTip中写入控制其自身位置的方法,将鼠标位置传入ToolTip中,使其在鼠标的位置,
设置一个Vector2来调整ToolTip的位置
完成显示---
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。