在学习 Graphic Raycaster 组件以前,先来作些实例的准备工做。Graphic Raycaster 的用法会结合一个小实例来讲明。
web
建立 Button、Text 等 UI 组件只须要在 Hierarchy 视图空白处右键菜单中点击,便可建立
ide
选中 Button、Text,在 Inspector 视图中调整 RectTransform 下的width、Height即可调整大小,Text 字体大小由 Text 组件下的 Font Size 控制
svg
建立两个按钮、一个文本,实例中须要用到一个额外的相机,因此再建立一个 UI 相机,前篇讲过怎么设置 UI 相机参数。结果如图所示
学习
Canvas 的 RenderMode 设为 Screen Space - Camera,并指定上步中建立的 UI 相机
测试
建立一个脚本Test,挂到 Canvas 下,并按图进行拖拽赋值
字体
Test.cscode
using UnityEngine; using UnityEngine.UI; public class Test : MonoBehaviour { [SerializeField] private Text m_Text; [SerializeField] private Button m_AddBtn; [SerializeField] private Button m_RestBtn; /// <summary> /// 记录点击次数 /// </summary> private int mClickCount; private void Start() { m_AddBtn.onClick.AddListener(OnAddButtonClick); m_RestBtn.onClick.AddListener(OnButtonResetClick); } private void OnButtonResetClick() { mClickCount = 0; SetText(); } private void OnAddButtonClick() { mClickCount++; SetText(); } private void SetText() { m_Text.text = string.Format("已点击{0}次", mClickCount); } }
实例准备好后,我们一边学习 Graphic Raycaster 的属性,一边实践操做orm
什么是 Graphic Raycasterxml
Graphic Raycaster 是挂在 Canvas 下用来检测 UI 输入事件的射线发射器。Unity 中的射线发射器除了 Graphic Raycaster 外还有 Physics Raycaster 和 Physics 2D Raycasterblog
Graphic Raycaster 有三个属性,分两部分进行说明
Ignore Reversed Graphics
是否忽略反转的 UI 元素的射线检测(文中暂时可理解为按钮点击事件的触发),若是勾选此项,射线将会穿过被翻转(正反面)的 UI 元素
若是咱们把 Graphic 下的 Ignore Reversed Graphics 取消勾选后再点击 ResetBtn,会发现 ResetBtn 会触发清零
Blocked Objects 和 Blocking Mask
这两个属性一块使用,用来阻止 UI 射线的延伸(这么描述比较容易理解,下文会有解释)
Blocked Objects 阻挡物体的类型(2D或3D或者两者都判断),官方字面是这么解释,实际上是根据阻挡物上挂的 Collider (必需要有Collider) 类型来判断 阻挡物是 2D 仍是 3D
Blocking Mask 阻挡物的 Layer
继续上面的实例,在场景中建立一个2D Sprite(图中命名为 Block Sprite ),调整 Layer 为 Water(任意),适当调整 Block Sprite 的缩放大小,并挂上 Collider 2D 组件,按图调整各物体的 Z 轴,让 Sprite 处于 AddBtn 与 ResetBtn 之间。记得修改 UI 相机的 Culling Mask,加入 Water 层,不然会看不到 Block Sprite
测试结果,第一次修改 Blocked Objects 属性时改成了3D,因为 Sprite 上挂的是 Box Collider 2D,因此这次修改后仍触发了 ResetBtn 事件
你可能感兴趣的内容