Unity-鼠标悬停改变物体层级

用最少的代码实现鼠标悬停时改变物体渲染层级

📝 前言

在2D游戏开发中,经常需要让物体在鼠标悬停时"浮"到最前面,比如卡牌游戏中的手牌高亮、RTS游戏中的单位选择等。今天我们就用最简单的代码实现这个效果:鼠标悬停时改变物体的Sorting Order,离开时恢复

🎯 最终效果

  • 鼠标进入物体 → 物体的Sorting Order变为指定值(如11)

  • 鼠标离开物体 → 物体的Sorting Order恢复原值

  • 无需移动物体,只改变层级,实现最简单的高亮效果

💻 最简代码实现

cs 复制代码
using UnityEngine;

public class HoverHighlight : MonoBehaviour
{
    public int hoverOrder = 11;  // 悬停时的层级
    private SpriteRenderer spriteRenderer;
    private int originalOrder;
    
    void Start()
    {
        spriteRenderer = GetComponent<SpriteRenderer>();
        if (spriteRenderer != null)
        {
            originalOrder = spriteRenderer.sortingOrder;
        }
    }
    
    void OnMouseEnter()
    {
        if (spriteRenderer != null)
        {
            spriteRenderer.sortingOrder = hoverOrder;
        }
    }
    
    void OnMouseExit()
    {
        if (spriteRenderer != null)
        {
            spriteRenderer.sortingOrder = originalOrder;
        }
    }
}

🔧 设置步骤

1. 准备物体

  1. 在场景中创建一个2D物体(比如Sprite)

  2. 确保物体有Sprite Renderer组件

2. 添加脚本

  1. 创建脚本 HoverHighlight.cs

  2. 将脚本拖拽到物体上

  3. 设置Hover Order为想要的层级值(如11,我这里默认是10)

3. 添加碰撞体(必须)

由于使用OnMouseEnter/Exit,必须有碰撞体:

  • Add Component → Physics 2D → Box Collider 2D

  • 调整碰撞体大小覆盖物体

🎮 运行测试

点击运行按钮!

相关推荐
林川~015 小时前
Unity 万能物理检测工具:射线检测 / 范围检测 / 层级过滤 / 编辑器可视化(可直接拿去用)
游戏·unity·c#·射线检测·通用工具
yi碗汤园13 小时前
MQTT消息队列遥测传输协议
网络·网络协议·unity
林川~0117 小时前
Unity 常用 API 与核心类全解:从生命周期到协程,附性能避坑清单(Unity 6 适配)
unity·游戏引擎·常用api
sensen_kiss18 小时前
CPT306 Coursework 1 个人游戏作业——坦克大战
unity·游戏程序·游戏策划
蒸鱼Yuzheng19 小时前
Unity 与 Unreal 测试工具怎么回答:Profiler、日志、自动化与证据链
测试工具·unity·性能分析·游戏测试·unrealengine
野区捕龙为宠20 小时前
Unity WebGL平台 通过 URL 加载图片(UGUI RawImage / 模型材质)
unity·团结引擎
阿松爱学习2 天前
【Unity开发】FileStream 详解及用法指南
unity·c#·unity开发
想做后端的前端2 天前
Unity-UIGI优化Rebatch与Rebuild
unity
玖玥拾2 天前
Unity Shader 基础与图形学(一)
unity·图形渲染·图形学·shader
WiChP3 天前
【V0.1B16】从零开始的2D游戏引擎开发之路
开发语言·算法·游戏引擎