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

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

🎮 运行测试

点击运行按钮!

相关推荐
小贺儿开发5 小时前
Unity3D 爆炸图案例演示
unity·产品·urp·机械拆装·爆炸图·零件·效果设计
Yasin Chen1 天前
Unity TMP_SDF 分析(二)数据来源2
unity·游戏引擎
Mao_Hui1 天前
Unity3d实时读取Modbus RTU数据
开发语言·嵌入式硬件·unity·c#
相信神话20211 天前
《酒魂》游戏开发实战——从设计思想到 Godot 实现(单机完整版)
游戏引擎·godot
心疼你的一切1 天前
【Unity-MCP完全指南:从零开始构建AI游戏开发助手】
人工智能·unity·ai·游戏引擎·aigc·mcp
示申○言舌1 天前
基于知识库(RAG)系统打造由大模型(LLM)驱动NPC游戏的技术设想
游戏·unity·大模型·知识库·rag·智能npc·npc记忆
前端不太难1 天前
OpenClaw 如何运行 Claw 资源文件
c++·开源·游戏引擎
avi91111 天前
UnReal-UE5虚幻蓝图如何修改
ue5·游戏引擎·虚幻·虚幻引擎·ue·蓝图·蓝图逻辑
国家一级摸鱼选手2 天前
MCP(Model Context Protocol)学习笔记
unity·ai·mcp