NGUI UICamera组件:摄像机控制

📂 Unity 开发资源汇总 | 插件 | 模型 | 源码

💓 欢迎访问 Unity 打怪升级大本营

在Unity中使用NGUI(Next-Gen UI)构建用户界面时,UICamera是一个关键组件,它负责管理UI元素的摄像机视角和渲染。UICamera确保UI在不同设备和屏幕尺寸上正确显示,同时提供深度控制和摄像机效果。本文将深入探讨UICamera的作用、特性以及如何在你的Unity项目中使用它。

在这里插入图片描述

NGUI 最新版 下载地址

华丽的分割线


标题1

💯 UICamera简介

UICamera是NGUI中用于处理UI渲染的摄像机组件。与传统的摄像机不同,UICamera专注于2D渲染,并且可以独立于场景摄像机工作。它可以设置为只渲染特定的UI层次或深度。

核心特性

  • 独立的摄像机视角:为UI元素提供独立的视图和投影。
  • 深度控制:控制UI元素的渲染顺序,确保正确的覆盖和层级关系。
  • 屏幕适配:自动适应不同分辨率和屏幕尺寸。
  • 效果应用:支持多种摄像机效果,如模糊、色彩调整等。

标题2

💯 组件详解

在这里插入图片描述
Event Mask 决定了哪些游戏对象层将能够接收事件。在大多数情况下,您可以将其保留在“Everything”上,因为此值与UnityEngine.Camera的Culling Mask结合使用,但如果您愿意,可以对其进行微调。如果您更改了包含 UI 层次结构的游戏对象的 Layer,请务必调整 Event Mask,否则您将突然发现 UI 不再响应事件。

Debug 选项可用于调试鼠标下当前的内容。如果您在单击某个按钮时无法弄清楚是什么在拦截鼠标事件,只需打开此选项,您就可以在右上角看到它。

Allow Multi-Touch 选项控制是否支持多次触控。如果关闭,多次触摸都将被视为一次触摸。

Sticky Tooltip 选项可微调工具提示行为。如果关闭,则一旦鼠标再次移动,工具提示就会隐藏。如果设置为开,则当鼠标悬停在同一对象上时,工具提示将保持打开状态。

Tooltip Delay 控制鼠标停止在某个对象上移动与发送到该对象的 OnTooltip 通知之间的延迟。此值以秒为单位。

Raycast Range 控制光线投射的长度,在大多数情况下,可以安全地忽略此值。此值以世界单位表示,因此,如果您的相机的近剪切为 0.3,远剪切为 1000,则您和您发现某些远处的物体对点击没有响应,请将此值设置为类似于 2000(大于相机的远剪裁平面和近剪裁平面之间的差异)。

在这里插入图片描述
Event Sources 部分控制将处理的事件类型。如果其中一个选项处于关闭状态,则将不再处理这些事件。某些平台会强制禁用特定事件在引擎盖下。例如,定向主机将自动关闭鼠标和触摸事件。

在这里插入图片描述
**Thresholds ** 部分,您可以通过调整单击、拖动和点击事件的阈值来微调鼠标和触摸事件的行为方式。这些值以像素为单位。

在这里插入图片描述
Axes and Keys 部分允许您选择哪些轴导致哪种运动。这些轴应与项目的输入管理器中的名称匹配。“平移”轴用于滚动和调整滑块等元素。通常使用 360 度控制器,您会将左摇杆设置为“导航”,将右摇杆设置为“平移”。这将允许您使用左控制杆导航 UI,并使用右控制杆与滑块、滚动条和滚动视图等 UI 元素进行交互。

提示1

UICamera 向碰撞器发送以下事件:

  • 当鼠标悬停在碰撞体上或移开时发送 OnHover (isOver)。
  • 当在碰撞器上按下鼠标按钮时,将发送 OnPress (isDown)。
  • 首次在游戏对象上按下鼠标按钮时,将发送 OnSelect(选中)。重复按压同一对象不会导致新的 OnSelect。
  • OnClick() 以与 OnSelect 相同的条件发送,并添加了检查功能以查看鼠标是否没有移动太多。UICamera.currentTouchID 告诉您单击了哪个按钮。
  • OnDoubleClick () 在四分之一秒内发生两次点击时发送。UICamera.currentTouchID 告诉您单击了哪个按钮。
  • OnDragStart () 在 OnDrag() 通知开始之前被发送到触摸下的游戏对象。
  • OnDrag (delta) 被发送到正在拖动的对象。
  • 当另一个对象被拖动到其区域上时,OnDragOver (draggedObject) 将发送到游戏对象。
  • 当另一个对象被拖出其区域时,OnDragOut (draggedObject) 将发送到游戏对象。
  • 当拖动事件完成时,OnDragEnd () 将发送到拖动的对象。
  • OnInput(文本)在键入时发送(在通过单击碰撞体选择碰撞体后)。
  • 当鼠标将鼠标悬停在碰撞体上一段时间而不移动时,将发送 OnTooltip (show)。
  • OnScroll (float delta) 在移动鼠标滚轮时发出。
  • OnKey(KeyCode 键)在使用键盘或控制器输入时发送。

要在您自己的自定义脚本中利用它们,只需创建一个具有适当函数的脚本,例如:

    void OnPress (bool isPressed)
    {
        if (isPressed) Debug.Log("I was pressed on!");
        else Debug.Log("I was unpressed");
    }

提示2

您可以使用委托从任何脚本订阅事件:UICamera.onClick、UICamera.onHover 等。这些委托将在实际通知发送到正确的对象之前被调用。您可以使用此功能来侦听脚本上的事件,而不管它们是否会转到该脚本的游戏对象。


标题3

💯 使用UICamera

创建UICamera

  1. 在Unity编辑器中,创建一个新的空GameObject,并命名为"UICamera"。
  2. 将UICamera组件附加到该GameObject上。

配置UICamera

在Inspector面板中,配置UICamera的属性:

  • Camera Mode:设置摄像机模式,如正交或透视。
  • Depth:设置摄像机的深度值,影响渲染顺序。
  • Clipping Planes:设置摄像机的近远剪辑平面,控制渲染范围。

管理UI层次

使用UICamera的"Depth"属性来管理UI元素的渲染层次:

  • 较低的Depth值表示元素在前景,较高的值表示背景。

应用摄像机效果

UICamera支持多种效果,如:

  • Blur:实现背景模糊效果,突出前景元素。
  • Color Adjustments:调整摄像机的色调、饱和度和亮度。

性能优化

  • 避免过度使用效果:过度使用摄像机效果可能会影响性能。
  • 合理设置Depth值:避免过多UI元素竞争同一Depth值。

标题4

💯 NGUI 下载地址


NGUI 最新版 下载地址


标题5

💯 结语

UICamera是NGUI中一个强大的组件,它为Unity UI提供了精细的摄像机控制和渲染管理。通过本文的介绍,你应该能够了解UICamera的基本概念、特性以及使用方法。合理使用UICamera,可以提升UI的视觉效果和性能,为玩家带来更加丰富的视觉体验。


TheEnd


跳跃

📂 Unity 开发资源汇总 | 插件 | 模型 | 源码

💓 欢迎访问 Unity 打怪升级大本营

🍉🍉🍉 如果觉得这篇文对你有帮助的话,请点个赞👍、收藏⭐️下吧,非常感谢! 💕💕💕
关注我

博主头像
【博主简介】:10年以上软件开发经验,精通 C语言C++C#Java 等开发语言,开发过大型 Android 项目,现主要自主开发经营 休闲益智类小游戏

【粉丝福利】:博主收藏了大量游戏开发资源和素材。这些资源经过博主多年整理沉淀,现筛选一批精品资源,分享给大家学习研究。

Unity打怪军团 广招天下勇士加入 Unity学习互助小组 有意进群的同学联系我,互3互推也请联系我…
联系我

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Unity打怪升级

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值