unity鼠标悬停在3D模型上时显示介绍面板

一、鼠标悬停在3D模型上时显示介绍面板

1.新建Cube模型,新建Image面板

2.编写脚本OnPointerEnterShow3D.cs,脚本挂载到模型上
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class OnPointerEnterShow3D : MonoBehaviour
{
    //要显示的ui
    public RectTransform tip;

    void Update()
    {
        Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
        RaycastHit hit;
        bool raycast = Physics.Raycast(ray, out hit);
        if (raycast)
        {
            GameObject go = hit.collider.gameObject;
            if (go == this.gameObject)
            {
                tip.gameObject.SetActive(true);
                FollowMouse();
            }
            else
            {
                tip.gameObject.SetActive(false);
                Destory(go);
            }

        }
        else
        {
            tip.gameObject.SetActive(false);
        }

    }

    //ui位置跟随鼠标实时变化
    void FollowMouse()
    {
        tip.position = new Vector3(Input.mousePosition.x, Input.mousePosition.y + 80f, 0f);
    }

}
3.运行如下

 

 

二、鼠标悬停在UI上时显示介绍面板

1.新建UI结构

2.编写脚本OnPointerEnterShowUI.cs,将脚本挂载到需要鼠标悬停的UI上
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.EventSystems;

public class OnPointerEnterShowUI : MonoBehaviour, IPointerEnterHandler, IPointerExitHandler
{

    public void OnPointerEnter(PointerEventData eventData)
    {
        Debug.Log("移入");
        transform.GetChild(1).gameObject.SetActive(true);
    }
    public void OnPointerExit(PointerEventData eventData)
    {
        Debug.Log("移出");
        transform.GetChild(1).gameObject.SetActive(false);
    }
}
3.运行如下

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值
>