Vuforia 地面识别案例

一、旋转和缩放

  1. 定位成功后将 PlaneFinder(平面检测器)禁用 。
  1. 在 Assets 面板空白处右键,选择【导入包 > 自定义包...】,选中资料文件夹中的【旋转和缩放控制.unitypackage】完成导入。
  1. 选中【ModelsRoot】对象点击右键,在弹出的面板中点击【AR > 旋转和缩放控制】按钮。
  1. 根据需求调整控制参数。

二、UI界面

2.1 什么是UI?

UI也就是用户界面,指的是我们在使用手机、电脑、软件、APP 和网站时,眼睛能看到、手指能操作的所有视觉界面。

它包括页面布局、颜色搭配、文字字体、图标按钮、交互样式等一切呈现在屏幕上的内容。

2.2 画布

如果把搭建 UI 界面比作绘画:画按钮、写字、贴图,先要一张画纸。

在 Unity 里,这张 "画纸" 就是画布(Canvas)。所有 UI 元素都必须挂载在画布下,否则无法被玩家看见。

2.2.1 怎么创建 画布

  1. 在层级视图空白处点击右键,在弹出的面板中选择【UI > 画布】。
  1. 层级里会出现【画布】,通常还会自动出现【事件系统】。

事件系统负责监听UI交互事件(如:鼠标点击、触屏滑动)。没有它,按钮点了也没反应。

2.3 渲染模式

所有 UI 控件必须放在 画布(Canvas)下才能渲染显示,画布的 渲染模式(Render Mode)决定 UI 在画面中的呈现方式。

(1)屏幕空间 - 覆盖(Screen Space - Overlay)

  • UI 直接盖在游戏画面最上层,像血条、开始菜单
  • 不需要指定摄像机
  • 适合:菜单、血条/分数、弹窗

(2)屏幕空间 - 摄像机(Screen Space - Camera)

  • UI 仍然贴着屏幕,但通过某个摄像机渲染
  • 可以做出与 3D 物体的前后层次感
  • 适合:需要和 3D 场景有遮挡关系的界面

3)世界空间(World Space)

  • UI 变成场景里真实存在的一块板子
  • 可放在墙上、桌子上
  • 适合:VR、场景电脑屏幕、角色头顶对话

2.4 UI 缩放

不同设备的屏幕尺寸与比例差异较大,同一按钮在电脑上大小合适,放到手机上可能偏小或撑满屏幕。而画布中的画布缩放器(Canvas Scaler),正是用于实现界面自适应适配的核心组件。

2.4.1 UI 缩放模式

该组件是 UGUI 实现多分辨率自适应的核心,提供三种 UI 缩放模式,对应下拉菜单内三个选项:

(1)恒定像素大小(Constant Pixel Size)

****工作逻辑:****UI 元素像素尺寸固定,不受屏幕分辨率影响。

****表现效果:****设备分辨率越高,UI 在画面中视觉尺寸越小;分辨率越低,UI 视觉尺寸越大。

(2)屏幕大小缩放(Scale With Screen Size)【项目最常用】

****工作逻辑:****设置一个参考分辨率,Unity 会根据当前屏幕分辨率与参考分辨率的比值,自动整体缩放画布。

****表现效果:****以设计稿尺寸为基准,在不同手机、电脑屏幕上自动缩放,保证界面比例统一。

(3)恒定物理大小(Constant Physical Size)

****工作逻辑:****按照现实物理尺寸(厘米 / 英寸)渲染 UI,依靠设备 DPI 信息计算像素。

****表现效果:****无论设备分辨率高低,UI 在物理尺寸上大小基本一致。

2.5 图像

用来显示图片:图标、头像框、背景、血条填充、装饰边框等。

2.5.1 ​​​​​​​怎么创建 图像?

  1. 在Canvas对象上点击右键,在弹出的面板中选择【UI > 图像】。

2.5.2 ​​​​​​​图像常用属性

|------------|-----------------------------------------------------------------------------|
| 参数 | 说明 |
| 源图像 | 要显示的图片(精灵 Sprite)。把图片拖进去 |
| 颜色 | 给图片染色 |
| 图像类型 | 1. ·简单:普通显示 2. ·切片:九宫格拉伸(做可拉伸按钮背景很常用) 3. ·平铺:重复铺满 4. ·填充:按比例填充(做血条、冷却转圈很好用) |
| 保留纵横比 | 勾选后强制维持图片原始宽高比例 |
| 射线检测目标 | 控制该图像是否接收鼠标 / 触摸点击事件 |

2.5.3 ​​​​​​​图片拖不进【源图像】怎么办?

图像需要的是精灵(Sprite),不是随便一张图。

  1. 把 png/jpg 导入【项目】窗口。
  1. 选中这张图,在检查器把【纹理类型】改成:精灵 (2D 和 UI),点击【应用】。
  1. 再拖到图像的「源图像」上。

2.6 ​​​​​​​文本-TextMeshPro

TextMeshPro 是 Unity 官方推荐的新一代文本渲染系统,用于替代旧版 UI Text,在清晰度、排版、样式、多语言上全面更强,是现代 Unity 项目的标准文本组件。

2.6.1 ​​​​​​​怎么创建 文本?

  1. 在Canvas对象上点击右键,在弹出的面板中选择【UI > 文本-TextMeshPro】。
  1. 第一次使用【文本-TextMeshPr】需要【TMP】插件
  1. 在检查器的文本输入框里输入内容,例如【阅读历史】。

2.6.2 ​​​​​​​中文乱码如何处理?

  1. 导入【资料 > Founts】中文字体库。
  1. 顶部菜单打开【窗口 > TextMeshPro > 字体资源创建工具】面板。
  1. Source Font File:拖入【YouSheBiaoTiHei-Regular.ttf】,点击 【Generate Font Atlas】(生成字体图集)。
  1. 将刚生成的字体拖入到【FontAsset】。

2.6.3 ​​​​​​​文本常用属性

|------------|----------------------------------------------|
| 参数 | 说明 |
| 字体资源 | 用于渲染文字的字体文件;如需正常显示中文,必须使用包含中文点阵的字体资源 |
| 字体大小 | 设置文字的显示字号大小 |
| 顶点颜色 / 面颜色 | 控制文字主体颜色 |
| 对齐 | 设置文字在文本框内的对齐方式,包括水平(左 / 中 / 右)和垂直(上 / 中 / 下) |
| 自动换行 | 控制文字长度超出文本框宽度时是否自动换行显示 |
| 溢出 | 设置文字超出文本框范围时的处理方式(如截断、省略、溢出显示等) |
| 启用自动大小 | 开启后会自动调整字体大小,让文字完整适配到文本框内 |

2.7 ​​​​​​​原始图像

原始图像:使用纹理(Texture),适合网络图片、摄像头画面、渲染纹理(小地图、监控画面)。

2.8 面板

面板:本质上是一块带半透明背景的底板,常用来当容器:设置窗口背景、背包底、把几个按钮归成一组。

2.9 ​​​​​​​切换

切换:就是开关 / 复选框:开或关、选中或未选中。

2.10 ​​​​​​​滑动条

滑动条:可拖动,用来调节连续数值。例子:音量、亮度、进度、血条。

2.11 ​​​​​​​滚动条

滚动条:通常在长列表右侧或底部,表示滚到哪里。单独用得少,多和【滚动视图】搭配。新手做界面时,直接用【滚动视图】更省事。

2.12 ​​​​​​​滚动视图

滚动视图:是用于实现内容超出显示区域时可滑动查看的核心组件,比如聊天记录、背包列表、道具图鉴、长文本等,都靠它实现上下 / 左右滚动效果。

2.13 ​​​​​​​按钮-TextMeshPro

****按钮:****是 UI 中最常用的交互控件,用于接收玩家的点击、触摸等操作,并触发对应的逻辑事件。

2.13.1 ​​​​​​​按钮常用属性

|----------------------|-----------------------------------------------|
| 参数名称 | 核心说明 |
| 可交互(Interactable) | 控制按钮是否可被点击、响应交互;关闭后按钮会自动进入置灰状态,无法触发点击事件 |
| 过渡(Transition) | 定义按钮在不同交互状态下(正常、悬停、按下、禁用)的视觉反馈,给玩家明确的操作感知 |
| 目标图形(Target Graphic) | 指定按钮的过渡效果(变色、换图)要作用的目标图像组件,默认绑定按钮自身的 Image 组件 |
| 点击事件(On Click ()) | 按钮的核心交互逻辑入口,用于绑定点击按钮后需要执行的自定义功能 / 逻辑 |

2.14 ​​​​​​​下拉列表-TextMeshPro

下拉列表:是选择类交互控件,点击后展开选项菜单,玩家从中选择一项,常用于模式选择、难度切换、语言选择、分辨率设置等场景。

2.15 ​​​​​​​输入-TextMeshPro

****输入框:****是用于接收玩家文字输入的交互控件,允许玩家通过键盘输入文本、数字、密码等内容,是人机交互中最基础的文本输入组件。


三、声音播放

3.1 ​​​​​​​Unity音频三大核心组件

Unity所有声音播放逻辑,都围绕三个核心模块展开,先理清分工,避免后续混淆:

1. 音频片段(AudioClip)

音频资源本体,就是我们导入的背景音乐、音效文件,仅作为资源素材存储,无法直接播放,必须依托AudioSource组件调用。

2. 音频音源(AudioSource)

声音播放控制器,挂载在游戏物体身上,负责加载音频、执行播放/暂停/停止、调节音量、循环播放等所有操作,是播放声音的核心组件。

3. 音频监听器(AudioListener)

声音接收设备,相当于游戏里的"耳朵"。默认场景中主相机(Main Camera)自带该组件,一个场景必须有且仅有一个生效的AudioListener,否则所有声音都无法听见。

3.2 ​​​​​​​创建声音组件

  1. 导入【资料 > 介绍.mp3】音频文件。
  1. 在 层级视图 单击右键,在弹出的面板中选择【音频 > 音频源】。
  1. 将【介绍.mp3】音频文件指定到【AudioClip】。

3.3 ​​​​​​​声音常用参数

|---------|---------------|----------------------------------------|
| 参数名称 | 英文名 | 核心功能说明 |
| 音频片段 | Audio Clip | 绑定需要播放的音频资源,未绑定音频文件则无法发出声音 |
| 唤醒时播放 | PlayOnAwake | 游戏物体激活、场景加载完成后,自动播放绑定的音频 |
| 循环播放 | Loop | 音频播放结束后自动重复播放,实现无限循环 |
| 音量 | Volume | 控制当前音源音量大小,取值范围 0(静音)~1(最大音量) |
| 音调/播放速度 | Pitch | 控制音频播放速度与音调,1为原速原声;大于1提速变尖锐,小于1降速变低沉 |
| 空间混合度 | Spatial Blend | 切换2D/3D音效模式:0为全局2D音效,1为空间3D音效,中间值为混合音效 |
| 静音 | Mute | 临时静音当前音源,勾选后无声音输出,不改变原有音量数值 |
| 空间音效开启 | Spatialize | 开启高精度3D空间音效模拟,强化声音方位、距离衰减、空间立体感 |
| 音频优先级 | Priority | 设置音频播放优先级(0最高、256最低),音频通道过载时优先播放高优先级音频 |


四、视频播放

  1. 导入【资料 > 中华建筑之美.mp4】视频和【UI播放视频.unitypackage】文件。
  1. 在【层级视图】空白处单击右键,在弹出的面板中选择【UI > 原始图像】。
  1. 给【原始图像】对象添加【视频 > 视频播放器】。
  1. 将【中华建筑之美.mp4】文件赋值给【视频播放器 > 视频剪辑】。
  1. 给【原始图像】对象添加【AR > UI播放视频】。

五、创建动画控制器

  1. 新建一个新的场景。

  2. 在 层级 面板在单击右键,在弹出的面板中选择【3D 对象 > 立方体】,创建一个Cube对象。

  1. 选中上面创建的【Cube】对象,点击【窗口 > 动画 > 动画】按钮,创建一个动画控制器。
  1. 再弹出的动画控制器面板,点击 "Create" 按钮,创建一个动画片段。

六、动画原理

6.1 ​​​​​​​

动画的原理与电影的原理相同,是由一些连续的静态图片构成的,这些图片以一定的速度连续播放,(播放的速度称为帧率)根据人眼有视觉暂留的特性,就会认为画面是连续运动的,这些静态的图片就是帧。

6.2 ​​​​​​​帧率

是指每秒钟显示多少帧图像,通常以"帧每秒"(FPS)来衡量。帧率决定了视频、游戏或动画的流畅度和细腻程度。(Unity动画的帧率是60FPS)。

常见的帧率有:

  1. 24 FPS:电影行业的标准帧率,适用于大多数电影和剧集。
  2. 30 FPS:常用于电视节目、网络视频、部分游戏和一些流媒体平台。
  3. 60 FPS:常见于高质量游戏和高清视频,能提供更加流畅的画面。

120 FPS、144 FPS、240 FPS等:高端游戏和专业电竞中使用。


七、动画片段

****动画片段:****是 Unity 中最基础的动画资源单元,用来存储一段独立的、可复用的动画数据,比如角色走路、攻击、物体旋转、开门、UI 动效等。

****核心作用:****存储关键帧动画数据:位置、旋转、缩放、材质参数、骨骼权重等。

  1. 启动【关键帧记录模式】系统会自动记录您的移动、旋转、缩放等操作。
  1. 移动【Cube】对象,系统会自动记录您的移动操作,并生成【关键帧】。

八、动画状态机

  1. 在为对象创建动画时,系统会自动生成一个【动画控制器】,用于管理多个动画片段的播放逻辑。
  1. 创建多个动画片段。
  1. 动画层级:为动画添加更多的层级,层级高的动画播放会覆盖低层级的。
  1. 参数:为动画状态机添加控制状态切换的参数。
  1. 点击参数面板中的 +号,创建状态切换参数。
  1. 添加切换连线。
  1. 选中上面绘制的"连线",设置动画切换参数。
  1. 选中动画片段,设置动画播放是否循环。

九、切换动画播放

**1.**在Canvas对象上点击右键,在弹出的面板中选择【UI > 按钮-TetMeshPro】。

  1. 在按钮上添加一个【鼠标单击】事件。
  1. 选择【Animator > SetTringger(string)】
  1. 设置需要播放动画的名称。
  1. 点击【播放按钮】预览最终效果。

十、案例练习

(1)完成建筑案例的UI交互。

(2)完成建筑出生动画制作。

相关推荐
DaLiangChen4 小时前
Vuforia 地面识别
ar·vuforia
江畔柳前堤10 小时前
YOLO 目标检测全流程深度剖析
人工智能·yolo·目标检测·计算机视觉·unity·面试·vllm
魔术师Dix12 小时前
一个轮子:Luban Skill 制作演示
游戏·unity·ai编程
各类产品分享1 天前
工业AR巡检系统哪家好
ar·ar巡检
xcLeigh1 天前
Unity基础:Light灯光组件入门——Directional Light、Point Light与Spotlight
unity·游戏引擎·教程
郝学胜-神的一滴1 天前
[简化版 GAMES 104] 现代游戏引擎 04:从0到1构建你的游戏世界
c++·游戏·unity·游戏引擎·软件工程·unreal engine
各类产品分享1 天前
电力行业AR智能运维哪个品牌好
运维·ar·ar巡检
HMS Core1 天前
借助AR Engine人脸识别与跟踪能力,直播不露脸也生动
ar·harmonyos
各类产品分享1 天前
国内做AR远程协作的公司有哪些
ar·ar巡检