//新增脚本UI_SkillTreeSlot
using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.UI;
using UnityEngine.WSA;
public class UI_SkillTreeSlot : MonoBehaviour, IPointerEnterHandler, IPointerExitHandler
{[SerializeField] private string skillName;[TextArea][SerializeField] private string skillDescription;[SerializeField] private Color lockedSkillColor;
private UI ui;
public bool unlocked;
private Image skillImage;[SerializeField] private UI_SkillTreeSlot[] shouldBeUnlocked;[SerializeField] private UI_SkillTreeSlot[] shouldBeLocked;
private voidOnValidate(){
gameObject.name ="SkillTreeSlot_UI - "+ skillName;}
private voidStart(){
skillImage = GetComponent<Image>();
skillImage.color = lockedSkillColor;
ui = GetComponentInParent<UI>();
GetComponent<Button>().onClick.AddListener(()=>UnlockSkillSlot());//检测有按动作的点击事件,不必每次都检验是否点击了,该方法可以实现}
public voidUnlockSkillSlot()//如果有一个前置技能不该解锁(有技能冲突)或者该解锁的没解锁(前置技能未解锁),则无法解锁当前技能{for(int i =0; i < shouldBeUnlocked.Length; i++){if(shouldBeUnlocked[i].unlocked == false)//表示不该解锁的解锁了{
Debug.Log("Cannot unlock skill");return;}}for(int i =0; i < shouldBeLocked.Length; i++){if(shouldBeLocked[i].unlocked == true)//表示需要解锁的没解锁{
Debug.Log("Cannot unlock skill");return;}}
unlocked = true;
skillImage.color = Color.white;}
public voidOnPointerEnter(PointerEventData eventData){
ui.skillToolTip.ShowToolTip(skillDescription, skillName);
Vector2 mousePosition = Input.mousePosition;//获取当前鼠标位置float xOffset =0;float yOffset =0;//根据鼠标的位置来看之tooltip的显示位置if(mousePosition.x >600){
xOffset =-150;}else{
xOffset =150;}if(mousePosition.y >200){
yOffset =-100;}else{
yOffset =100;}
ui.skillToolTip.transform.position = new Vector2(mousePosition.x + xOffset, mousePosition.y + yOffset);}
public voidOnPointerExit(PointerEventData eventData){
ui.skillToolTip.HideToolTip();}}
//新增脚本UI_SkillToolTip
using System.Collections;
using System.Collections.Generic;
using TMPro;
using UnityEngine;
public class Ui_SkillToolTip : MonoBehaviour
{[SerializeField] private TextMeshProUGUI skillDescription;[SerializeField] private TextMeshProUGUI skillName;
public voidShowToolTip(string _skillDescription, string _skillName){
skillDescription.text = _skillDescription;
skillName.text = _skillName;
gameObject.SetActive(true);}
public voidHideToolTip()=> gameObject.SetActive(false);}