当前位置: 首页 > news >正文

中餐厅摆台-点击下一步一次显示骨碟碗勺并显示文字 距离

需要的预制体

需要的脚本

还有一个下一步的button

最后的成品是

最后是代码

using UnityEngine;

public class Billboard : MonoBehaviour
{
void LateUpdate()
{
transform.LookAt(transform.position + Camera.main.transform.forward);
}
}

using UnityEngine;

[System.Serializable]
public class PlaceStep
{
// 当前步骤要生成的餐具预制体
public GameObject itemPrefab;
// 对应场景里的点位Transform
public Transform pointTrans;
// 餐具显示名称(用于悬浮文字标注)
public string showName;
// 和上一个物体的标准间距(cm),用来显示距离文字
public float spaceCm;
}

using UnityEngine;
using UnityEngine.UI;
using TMPro;

public class TableStepManager : MonoBehaviour
{
[Header("摆台步骤列表,按顺序填:骨碟→汤碗→味碟...")]
public PlaceStep[] stepList;
[Header("下一步按钮")]
public Button btnNext;
[Header("名称&距离文字UI预制体(世界空间画布)")]
public GameObject tipUIPrefab;

// 当前进行到第几步
private int currentStepIndex = 0;

void Start()
{
// 绑定按钮点击事件
btnNext.onClick.AddListener(NextStep);
}

void NextStep()
{
// 所有步骤执行完毕直接返回
if (currentStepIndex >= stepList.Length)
{
Debug.Log("全部餐具摆放完成");
return;
}

// 取出当前步骤配置
PlaceStep curStep = stepList[currentStepIndex];
Transform point = curStep.pointTrans;

// 核心生成代码:按点位坐标、旋转生成,父物体为table6
GameObject itemObj = Instantiate(
curStep.itemPrefab,
point.position,
point.rotation,
transform
);

// 生成餐具名称悬浮文字
GameObject nameTip = Instantiate(tipUIPrefab, itemObj.transform.position + Vector3.up * 0.15f, Quaternion.identity, transform);
nameTip.GetComponentInChildren<TextMeshProUGUI>().text = curStep.showName;
nameTip.AddComponent<Billboard>();

// 如果不是第一步,计算和上一个物体的中点,显示间距文字
if (currentStepIndex > 0)
{
Transform lastItem = transform.GetChild(transform.childCount - 2);
Vector3 midPos = (itemObj.transform.position + lastItem.position) / 2;
GameObject spaceTip = Instantiate(tipUIPrefab, midPos, Quaternion.identity, transform);
spaceTip.GetComponentInChildren<TextMeshProUGUI>().text = curStep.spaceCm + "cm";
spaceTip.AddComponent<Billboard>();
}

// 步骤+1,等待下一次点击下一步
currentStepIndex++;
}
}

http://www.cnnetsun.cn/news/3092888.html

相关文章:

  • STM32寄存器开发练习(一):GPIO-从最原始的代码到规范写法
  • 从推荐系统到大模型:算法工程师的转型实战指南
  • 机械设计公差与配合实战指南:从核心原理到图纸标注
  • 零代码设计小米穿戴表盘:Mi-Create让创意触手可及
  • 为什么说APAxpo已然成为各大品牌新品首发的核心阵地?
  • Redis Bitmap 实现北极星日淘用户签到与活跃度统计(极致省内存)
  • 2026大二寸证件照制作工具指南:手机App、免费无水印小程序操作教程
  • Topit:告别窗口切换烦恼,让你的Mac窗口永远在最前面
  • 机电安装公司有哪些?广州机电安装公司推荐!
  • IDEA大纲导航突然卡顿?,紧急排查清单:内存泄漏、插件冲突、AST缓存溢出——3分钟定位根因的5个诊断命令
  • Claude 3.5语义压缩层解析:零偏移输出与灰度信息蒸发
  • GPT-4o深度解析:技术落地与工程避坑指南
  • 三通道直流电阻测试仪的现场效率对比
  • 如何在Blender中高效创作GTA V模型:Sollumz插件实战指南
  • Playwright元素定位实战:从原理到健壮策略的完整指南
  • STM32驱动WS2812全彩LED:SPI+DMA高效实现动态光效
  • Anthropic Mythos:语义约束引擎驱动的推理阶跃
  • Navicat Mac版无限试用重置终极指南:3分钟解决14天试用限制
  • MATLAB水果蔬菜颜色识别工具:KNN分类+RGB/HSV特征提取
  • Postman接口自动化测试:从工具到框架的实战指南
  • 国内主流大厂toekn价格
  • 大模型版本命名规范与事实核查指南
  • Claude 3.7 Sonnet:面向软件开发的可调控推理模型
  • 从Selenium到Playwright:构建稳定高效的跨浏览器自动化测试实战
  • 阴阳师百鬼夜行终极自动化指南:如何用智能脚本解放你的双手
  • Spring Boot MockMvc实战:高效测试REST API的完整指南
  • 用心理学原理强化AI工程纪律:权威、承诺与社会认同的实战框架
  • Mythos门控发布:大模型推理深度与责任治理的双重跃迁
  • Anthropic Mythos:可信推理链与门控式能力发布解析
  • Claude推理中间层‘蒸发’:模型内核如何替代Router Layer