当前位置:网站首页>unity中跟随鼠标浮动的面板,并可以自适应文字内容的大小

unity中跟随鼠标浮动的面板,并可以自适应文字内容的大小

2022-07-06 18:43:00 吴梓穆

我们经常会用到浮动面板的功能,比如鼠标移动到某个物体上,显示这个物体的名字等信息
为此我制作了一个可以根据文本内容自适应内容大小的面板
该面板的结构如下
请添加图片描述

一共有三个物体,InfoText名字不能该其余可以
物体1: RoomInfoPanel由四个关键组件,说明如下

1 Text 用于根据文字大小自适应尺寸,这个文本是透明的,不给用户看,且字号要比真正用于显示的InfoText稍大
2 FloatInfoPanel,用于设置显示的文字,代码如下,可根据需要修改

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

/// <summary>
///房间信息的浮动面板
/// </summary>
public class FloatInfoPanel : MonoBehaviour
{
    
    /// <summary>
    /// 自身的Text组件,这个Text是完全透明的,用于控制自适应面板大小
    /// </summary>
    private Text textSelf;
    /// <summary>
    /// 显示信息用的文本框
    /// </summary>
    private Text infoText;

    /// <summary>
    /// 设置悬浮显示的监控摄像头信息
    /// </summary>
    public void SetRoomName(string roomName)
    {
    
        if (textSelf == null)
        {
    
            textSelf = transform.GetComponent<Text>();
            infoText = transform.Find("InfoText").GetComponent<Text>();
        }
        textSelf.text = GameController.Instance.currentRoom_float;
        infoText.text = GameController.Instance.currentRoom_float;
    }
}

3 FloatWithMouse_Panel 面板跟随鼠标移动,挂上即可,代母如下

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

/// <summary>
/// 面板跟随鼠标浮动
/// </summary>
public class FloatWithMouse_Panel : MonoBehaviour
{
    
    public float xoffset;
    public float yoffset;
    public float zoffset;

    private void Update()
    {
    
        print(Input.mousePosition);
        transform.position = Input.mousePosition + new Vector3(xoffset,yoffset,zoffset);
    }
}

4ContentSizeFitter 自适应尺寸
需要注意,锚点要为点状,放在左下角,轴点可根据需要防止,建议靠左,或左下

物体2 BG,面板背景,四边和RoomInfoPanel对齐
物体3 InfoText 给用户看的文字

原网站

版权声明
本文为[吴梓穆]所创,转载请带上原文链接,感谢
https://blog.csdn.net/weixin_44568736/article/details/125596431

随机推荐