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

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

🎮 运行测试

点击运行按钮!

相关推荐
丁小未10 分钟前
Unity 几种常见合批手段的要求
游戏·unity·合批·srpbatcher·动态合批·静态合批
旧物有情20 小时前
游戏开发常用架构 #MVP,MVC
游戏·unity·架构·mvc
勇踏前人未索之境21 小时前
Unity打包运行于鸿蒙手机
unity·智能手机·harmonyos
玖玥拾1 天前
Unity 3D 笔记(十一)UI 框架进阶:栈弹窗交互、BasePanel 基类虚方法、DoTween 界面动画
笔记·3d·unity
郝学胜-神的一滴1 天前
中级OpenGL教程 023:Assimp模型加载全解——从源码到架构的骈文探秘
c++·unity·游戏引擎·cmake·unreal engine·opengl
xcLeigh2 天前
Unity基础:GameObject与Component——Unity核心架构思想彻底理解
unity·教程·component·gameobject
郝学胜-神的一滴2 天前
中级OpenGL教程 022:探秘三维世界的血脉传承——物体父子关系与矩阵递归奥义
c++·线性代数·unity·矩阵·游戏引擎·unreal engine·opengl
weixin_424294673 天前
Unity的测试Edit Mode和Play Mode,有什么区别?
unity
Python私教3 天前
我用 AI 做出了第一个 Godot 贪吃蛇
人工智能·游戏引擎·godot