中餐厅摆台 点击UI图片拖拽预制体到桌面并 实现预制体拖拽
1、准备桌面 和 酒杯先在Scene窗口中调好相对位置然后将酒杯拖拽到project目录中生成预制体。需要给预制体增加一个脚本就是 using UnityEngine;public class ItemHeight : MonoBehaviour{// 在预制体Inspector手动填好这个物品放在桌面需要的世界Ypublic float tableY 0.869f;}填好酒杯的位置因为拖拽到桌面的时候position中的xz都可以用鼠标的但是高度必须用自身的。不然容易穿模或者飞起。在写代码前需要给桌面一个box collisder 不然射线检测不到。using UnityEngine;using UnityEngine.UI;using UnityEngine.EventSystems;public class ItemDrag : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDragHandler{// 酒杯预制体public GameObject wineGlassPrefab;// 拖拽时跟随鼠标的临时物体private GameObject dragTempObj;// UI原图初始位置固定不动private Vector2 uiOriginPos;void Awake(){uiOriginPos transform.position;}// 开始拖拽public void OnBeginDrag(PointerEventData eventData){// UI图标固定不动恢复原始位置transform.position uiOriginPos;// 生成临时3D酒杯跟随鼠标dragTempObj Instantiate(wineGlassPrefab);// 临时物体关闭碰撞避免射线干扰Collider col dragTempObj.GetComponentCollider();if (col ! null) col.enabled false;}// 拖拽过程临时酒杯跟随鼠标public void OnDrag(PointerEventData eventData){// UI始终固定原位transform.position uiOriginPos;if (dragTempObj ! null){Ray ray Camera.main.ScreenPointToRay(eventData.position);RaycastHit hit;// 地面空白处也更新位置高度抬高一点防止穿模if (Physics.Raycast(ray, out hit, 1000)){dragTempObj.transform.position hit.point Vector3.up * 0.02f;}else{// 没碰到物体鼠标远处显示dragTempObj.transform.position ray.GetPoint(5);}}}// 松开鼠标放置正式物体public void OnEndDrag(PointerEventData eventData){// 销毁跟随鼠标的临时酒杯if (dragTempObj ! null){Destroy(dragTempObj);dragTempObj null;}// 射线检测桌面生成正式酒杯Ray ray Camera.main.ScreenPointToRay(eventData.position);RaycastHit hit;if (Physics.Raycast(ray, out hit)){// 判定是桌子if (!hit.collider.CompareTag(Table)) return;GameObject newGlass Instantiate(wineGlassPrefab);// 读取预制体内部提前存好的Y值ItemHeight heightData newGlass.GetComponentItemHeight();float targetY heightData.tableY;// XZ用鼠标点击Y直接用预制体内存好的固定数值Vector3 placePos new Vector3(hit.point.x, targetY, hit.point.z);newGlass.transform.position placePos;newGlass.transform.SetParent(hit.transform);}}}给这个image加一个itemDrag的脚本并把酒杯预制体拖拽进去。using UnityEngine;using UnityEngine.UI;using UnityEngine.EventSystems;public class ItemDrag : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDragHandler{// 酒杯预制体public GameObject wineGlassPrefab;// 拖拽时跟随鼠标的临时物体private GameObject dragTempObj;// UI原图初始位置固定不动private Vector2 uiOriginPos;void Awake(){uiOriginPos transform.position;}// 开始拖拽public void OnBeginDrag(PointerEventData eventData){// UI图标固定不动恢复原始位置transform.position uiOriginPos;// 生成临时3D酒杯跟随鼠标dragTempObj Instantiate(wineGlassPrefab);// 临时物体关闭碰撞避免射线干扰Collider col dragTempObj.GetComponentCollider();if (col ! null) col.enabled false;}// 拖拽过程临时酒杯跟随鼠标public void OnDrag(PointerEventData eventData){// UI始终固定原位transform.position uiOriginPos;if (dragTempObj ! null){Ray ray Camera.main.ScreenPointToRay(eventData.position);RaycastHit hit;// 地面空白处也更新位置高度抬高一点防止穿模if (Physics.Raycast(ray, out hit, 1000)){dragTempObj.transform.position hit.point Vector3.up * 0.02f;}else{// 没碰到物体鼠标远处显示dragTempObj.transform.position ray.GetPoint(5);}}}// 松开鼠标放置正式物体public void OnEndDrag(PointerEventData eventData){// 销毁跟随鼠标的临时酒杯if (dragTempObj ! null){Destroy(dragTempObj);dragTempObj null;}// 射线检测桌面生成正式酒杯Ray ray Camera.main.ScreenPointToRay(eventData.position);RaycastHit hit;if (Physics.Raycast(ray, out hit)){// 判定是桌子if (!hit.collider.CompareTag(Table)) return;GameObject newGlass Instantiate(wineGlassPrefab);// 读取预制体内部提前存好的Y值ItemHeight heightData newGlass.GetComponentItemHeight();float targetY heightData.tableY;// XZ用鼠标点击Y直接用预制体内存好的固定数值Vector3 placePos new Vector3(hit.point.x, targetY, hit.point.z);newGlass.transform.position placePos;newGlass.transform.SetParent(hit.transform);}}}这样就实现了拖拽如果还想拖拽已经生成的物体需要给预制体加上下面这个脚本并给预制体加上box collisder, 给主相机 加上 physics RayCaster和eventSystem。using UnityEngine;using UnityEngine.EventSystems;// 拖拽场景中已经生成好的桌面3D物品public class TableObjectDrag : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDragHandler{// 鼠标点击点 和 物体坐标的偏移量防止拖拽时物体瞬移private Vector3 dragOffset;// 桌子基准高度private float tableStandardY;// 开始拖拽鼠标按下杯子瞬间执行public void OnBeginDrag(PointerEventData eventData){Ray ray Camera.main.ScreenPointToRay(eventData.position);RaycastHit hit;if (Physics.Raycast(ray, out hit)){// 记录桌子高度全程锁定Y不变化tableStandardY hit.transform.position.y;// 计算偏移保证鼠标点杯子任意位置都能平稳拖动dragOffset transform.position - hit.point;}}// 拖拽持续中鼠标移动实时更新杯子位置public void OnDrag(PointerEventData eventData){Ray ray Camera.main.ScreenPointToRay(eventData.position);RaycastHit hit;if (Physics.Raycast(ray, out hit)){// X、Z跟随鼠标Y固定桌面高度不会嵌入桌子、不会飘高Vector3 newPos new Vector3(hit.point.x dragOffset.x,tableStandardY,hit.point.z dragOffset.z);transform.position newPos;}}// 拖拽结束松开鼠标public void OnEndDrag(PointerEventData eventData){// 可选拓展拖到桌面外自动吸附回桌面这里留空你按需加逻辑}}

相关新闻

— 一款针对 IT 团队开发的文档管理系统,基于 Golang 开发,内置项目管理,用户管理,权限管理等功能,可以用来储存日常接口文档,数据库字典,手册说明等文档。功能特色:

— 一款针对 IT 团队开发的文档管理系统,基于 Golang 开发,内置项目管理,用户管理,权限管理等功能,可以用来储存日常接口文档,数据库字典,手册说明等文档。功能特色:

色:项目空间划分:支持创建多个项目空间,每个空间可独立管理文档,适合多团队或多产品线并行管理性化项目设置:支持配置项目名称、描述、评论权限、自动发布、下载权限等,适配不同项目需求多编辑器支持&#…

2026/7/1 1:46:56阅读更多 →
TensorRT 推理加速:从 ONNX 到优化引擎的编译与部署全链路

TensorRT 推理加速:从 ONNX 到优化引擎的编译与部署全链路

TensorRT 推理加速:从 ONNX 到优化引擎的编译与部署全链路 一、GPU 推理的延迟鸿沟:为什么 PyTorch 模型跑不到理论算力 在模型部署阶段,一个常见的困惑是:GPU 的理论算力(如 A100 的 312 TFLOPS FP16)与实…

2026/7/1 1:41:55阅读更多 →
[智能体-607]:OpenClaw:IDENTITY.md 定义我是谁,详解,示例

[智能体-607]:OpenClaw:IDENTITY.md 定义我是谁,详解,示例

一、文件定位核心定义IDENTITY.md用于定义智能体固定身份本体:角色定位、职能边界、归属关系、基础能力范围。和 AGENTS.md 区分:AGENTS.md 规定做事的流程规则;IDENTITY.md 定义自身是谁、本职工作是什么、服务对象是谁。和 SOUL.md 区分&am…

2026/7/1 1:41:55阅读更多 →
Windows 11本地部署GLM-5.2大模型:集成Claw工具调用与Agent知识库实战

Windows 11本地部署GLM-5.2大模型:集成Claw工具调用与Agent知识库实战

最近在尝试本地部署大语言模型时,发现很多教程都要求使用Linux系统,或者配置过程极其复杂,劝退了不少想在Windows上体验的开发者。特别是对于智谱GLM-5.2这样性能强劲的模型,以及像Claw、Agent知识库这类前沿应用,很多…

2026/7/1 2:47:04阅读更多 →
效率够高吗?8款AI论文网站排行榜,毕业季救星!

效率够高吗?8款AI论文网站排行榜,毕业季救星!

论文写到一半卡壳?文献找了一堆却无从下手?格式调整反复修改,查重结果还总不理想? 别担心!AI论文工具正在成为高校学生的高效帮手。本文将基于学术严谨性、资料检索能力、格式自动生成和查重优化效果四大维度&#xf…

2026/7/1 2:47:04阅读更多 →
写论文如何又快又好?资深导师力荐这几个AI写作辅助网站

写论文如何又快又好?资深导师力荐这几个AI写作辅助网站

写论文又快又好,关键在于用对 AI 工具、走对流程——资深教授普遍推荐:千笔AI(中文全流程首选) 豆包学术版(轻量高效) DeepSeek 学术版(理工 / 长文本) Grammarly Academic&#xff…

2026/7/1 2:47:04阅读更多 →
【精通】RustMark v2.5:国际化与无障碍 — Unicode/ICU4X/AccessKit 实战

【精通】RustMark v2.5:国际化与无障碍 — Unicode/ICU4X/AccessKit 实战

【精通】RustMark v2.5:国际化与无障碍 — Unicode/ICU4X/AccessKit 实战 目录 前言 技术背景与演进逻辑 1.1 国际化与无障碍:被忽视的工程基础设施 1.2 从"事后翻译"到"架构内建"的范式迁移 1.3 传统方案的三大崩塌点 1.4 RustMark v2.5 的国际化与无障…

2026/7/1 2:47:04阅读更多 →
从零构建AI工作流与智能体:以视频摘要生成为例的实践指南

从零构建AI工作流与智能体:以视频摘要生成为例的实践指南

在实际 AI 项目开发中,我们常常面临一个困境:单个 AI 模型或工具能力有限,而复杂的业务需求往往需要串联多个步骤,例如从文本生成视频脚本,再生成语音,最后剪辑成片。这个过程如果手动操作,不仅…

2026/7/1 2:47:04阅读更多 →
Java毕设选题推荐:基于 SpringBoot 的农户农产品展销助农平台的设计与实现 基于 SpringBoot 的智慧农商便民服务平台【附源码、mysql、文档、调试+代码讲解+全bao等】

Java毕设选题推荐:基于 SpringBoot 的农户农产品展销助农平台的设计与实现 基于 SpringBoot 的智慧农商便民服务平台【附源码、mysql、文档、调试+代码讲解+全bao等】

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

2026/7/1 2:42:04阅读更多 →
AI Coding 六个月真实ROI账本:产品经理的血泪教训,研发的冷静忠告

AI Coding 六个月真实ROI账本:产品经理的血泪教训,研发的冷静忠告

6个月前的2025年12月,Boris Cherny 公开宣布自己卸载了 IDE。一时间,Vibe Coding 成了全行业最热的话题。6个月后,当我们回过头来拉一份真实账本,发现事情远没有"一句话生成一个App"那么浪漫。本文从产品经理和研发两个…

2026/6/30 4:03:30阅读更多 →
审计来了,数据权限全开——审计走了,怎么确保权限全部关掉?

审计来了,数据权限全开——审计走了,怎么确保权限全部关掉?

引言:审计结束三个月了,审计员的权限还没关某城商行每年按照监管要求开展至少一次数据安全审计。审计期间,内审部门需要抽样检查各类业务数据——交易流水、客户信息、员工操作日志、权限配置记录。这些数据分布在不同系统中,审计…

2026/6/30 4:36:27阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/1 0:01:44阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/1 0:01:44阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/1 0:01:44阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/1 0:01:44阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/1 0:01:44阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/1 0:01:44阅读更多 →