UGUI射线检测

1.Graphic Raycaster

主要用于UI上的射线检测,挂有这个组件的物体,必须要挂上Canvas这个组件(当挂上Graphic Raycaster时Canvas也会自动挂上)。

Ignore Reversed Graphics:是否忽略反方向的图形,如果为true,则表示图形正面展示时,会接收到射线检测;反面展示时,不会接收到射线检测;否则,正反面展示都会接收到射线检测

Blocking Objects:屏蔽指定类型的(物理)对象,使它们不参与射线检测。渲染模式不为ScreenSpaceOverlay时起作用。可选值为:
None:不屏蔽任何物理对象
Two D:屏蔽2D物理对象(即具有2D碰撞体的对象)
Three D:屏蔽3D物理对象(即具有3D碰撞体的对象)

All:屏蔽所有物体对象

Blocking Mask:使屏蔽对象中的指定层不参与射线检测。渲染模式不为ScreenSpaceOverlay时,且Blocking Objects不为None时起作用。
例如,Blocking Objects为2D,Blocking Mask为UI,指2D物理对象中是UI层的东西都不会接收射线检测,而2D物理对象中的其他层还是能接收射线检测

2.Physics Raycaster & Physics2D Raycaster

主要用于物理对象上的射线检测,挂有这个组件的物体,必须要挂上Camera这个组件(当挂上组件时Camera也会自动挂上)。当物体(2D或者3D物理对象)受到射线检测时,物体上的实现了事件接口的方法会被调用

Physics Raycaster :只会对3D物体对象产生影响,Camera的Projection,尽量选为Perspective(透视)模式
Physics2D Raycaster:只会对2D物体对象产生影响,Camera的Projection,尽量选为Orthography(正交)模式
EventMask:射线作用层,可以用来做事件屏蔽

3.Selectable

Selectable的意思是可选择的,它是UGUI中很多交互控件(Button/ Slider / InputField / Toggle / Scrollbar /)的基类,其中的Interactable,当值为false时,UI控件会进入disable状态(颜色会变为Disabled Color的那个颜色),但是UI控件仍然能接收到射线检测!

时间: 07-05

UGUI射线检测的相关文章

【转】 [UnityUI]UGUI射线检测

http://blog.csdn.net/lyh916/article/details/50947026 1.Graphic Raycaster 主要用于UI上的射线检测,挂有这个组件的物体,必须要挂上Canvas这个组件(当挂上Graphic Raycaster时Canvas也会自动挂上). Ignore Reversed Graphics:是否忽略反方向的图形,如果为true,则表示图形正面展示时,会接收到射线检测:反面展示时,不会接收到射线检测:否则,正反面展示都会接收到射线检测 Bloc

unity 射线检测

unity中射线检测时非常实用也经常实用的一种手段.下面讲解一下射线检测问题. 1)Ray 根据射线端点和射线的方向定义一条射线 Ray ray= new Ray(transform.position, transform.forward); 定义一个包含射线投射信息的变量RaycastHit hit,并进行射线检测Physics.SphereCast RaycastHit hit; if(Physics.SphereCast(ray,1f,out hit)) { if(hit.distance

Unity3D 之射线检测

这里来记录下射线检测的相关内容: 射线检测故名就是通过射线去检测是否和碰撞器产生了交集,和碰撞器与碰撞器发生交集一样,会返回一个真. 射线的用法很多:比如检测是否跳跃,通过向地面投射射线控制在地面时候可以跳起. 射击游戏中可以通过定长射线去判断目标物体是否被击中,等 主要用到的工具类是: Physics RaycastHit 光线投射碰撞 Ray 射线 第一种是: Physics.Linecast 线性投射 从开始位置到结束位置做一个光线投射,如果与碰撞体交互,返回真. Debug.DrawLi

射线检测

using UnityEngine; using System.Collections; public class RayCastDemo : MonoBehaviour { //射线碰撞检测器 RaycastHit hit; void Update() { //通过鼠标屏幕坐标,生成一条射线对象 Ray r = Camera.main.ScreenPointToRay (Input.mousePosition); //发射射线,并检测 if (Physics.Raycast (r, out h

Unity Ugui射线坐标转换总结

世界空间中的点坐标转换到屏幕坐标: screenPos = RectTransformUtility.WorldToScreenPoint(cam, worldPos.transform.position); UGUI物体的坐标转换到屏幕坐标: screenPos = RectTransformUtility.WorldToScreenPoint(canvas.worldCamera, uguiObj.transform.position); 屏幕坐标转换到UGUI坐标: Vector3 wor

【Unity笔记】经典的鼠标点击射线检测碰撞

void Update (){ if(Input.GetMouseButton(0)){ //从摄像机发出到点击坐标的射线 Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); RaycastHit hitInfo; if(Physics.Raycast(ray,out hitInfo)){ //划出射线,只有在scene视图中才能看到 Debug.DrawLine(ray.origin,hitInfo.point); Game

测试-射线检测的目标是否需要附加刚体

今天朋友问我这个问题,官方文档没有明确说明不需要刚体,只是说了碰撞器. 之前使用时一直没太注意,于是测一下 测试结果为不需要 void Start() { var raycastHit = default(RaycastHit); if (Physics.Raycast(new Ray() { origin = transform.position, direction = Vector3.down }, out raycastHit)) { Debug.Log(raycastHit.trans

UGUI初学习--------Canvas

今天仔细研究了一下UGUI觉得有必要写一篇文章来分享一下.废话不多说直接开码字..... 作者之前也学过NGUI.这里来说明一下,UGUI和NGUI的渲染结构略有不同,UGUI中将NGUI中的深度处理项取消了.UGUI的渲染是按照Hierarchy的UI游戏对象的排列顺序从上到下依次渲染的,重叠部分后渲染的会把先渲染的挡住.总结一句话:下在上前,子在父前.为了修改各个UI控件的绘制顺序,开发者可以采用以下两种方法:拖动Hierarchy视图里的各UI控件对象,改变它们在Canvas下的排列顺序:

UGUI事件系统——事件数据

事件数据 - EventData BaseEventData:基础事件数据 -事件数据的基类,和EventSystem配合使用 PointerEventData:指针事件数据 -鼠标与触摸事件的相关数据(点击.抬起.拖动等),UGUI中大部分事件数据类型都是PointerEventData类型 button:该属性有3个取值.分别是Left(鼠标左键).Right(鼠标右键).Middle(鼠标中键) clickCount:连续点击的次数 clickTime:发送点击事件的时间 delta:当前

UGUI实现拼图游戏

首先看看效果图 拼图完成后,会显示game over 来看看工程结构图 Canvas:画布 kanpask:背包 cell 格子,每个格子上面放一个分割的图片 food就是要拖动的图片 这里cell-food创建一个预设体 准备一个图片.分割成精灵 kanpask:组建 因为这里是5x5的格子,表格布局(Grid Layout Group)x:100 y:100,spacing:x=1 y=1 所以款和高分别是504 food添加组建,来控制是否启用射线 创建createImge.cs脚本挂载在