子物体只实现Click
父物体实现Click和Down
当父物体和子物体重叠的时候
在点击父物体时,事件的触发没有问题
但当点击子物体时,子物体的Click和父物体的Click事件都不会被触发,父物体的其他事件不受影响
解决方法:子物体也实现Down
子物体只实现Click
父物体实现Click和Down
当父物体和子物体重叠的时候
在点击父物体时,事件的触发没有问题
但当点击子物体时,子物体的Click和父物体的Click事件都不会被触发,父物体的其他事件不受影响
解决方法:子物体也实现Down
IDropHandler依赖于IDragHandler
所有的拖拽接口都依赖于OnDrag
也就是说如果想实现拖拽功能的话,必须要有OnDrag
selectable就是一切交互组件的基础
其他的就是可以绑定事件
Unity的遮罩组件Mask:
父物体时遮罩图片
子物体是要遮罩的图片
将Mask组件挂在父物体上
RawImage的应用
1 序列帧动画的播放
2 将3D物体映射在UI上
将RT分别赋值给RawImage和拍摄3D物体的摄像机,不想在UI上显示背景的化,该摄像机渲染方式选择Solid Color
RawImage主要应用于帧动画,利用UV Rect,编写脚本可以实现帧动画的播放
ScaleFactor = 运行时的屏幕尺寸/制作时的屏幕尺寸
图片的像素数*图片面板中的像素转unity单位*Canvas中的unity单位转像素 = 在cavas中图片的像素数
画布的渲染方式有三种:
1 OverLay:UI始终在最上层
2 Camera:绑定一个摄像机,通过调节摄像机和Panel之间的距离,可以让3D物体显示和UI之间的显示,不可以穿插显示
3 World Space:调节3D物体,可以穿插显示
蓝图模式:panel不会随着图片的改变而改变
原始编辑模式:轴心点的位置不变,通过改变UI的位置满足轴心点数值的变化
获取UI宽高最安全的方式
RectTransform rect = transform.GetComponent<RectTransform>();
Debug.Log("UI的宽:"+rect.rect.width+" 高:"+rect.rect.height);
可以通过设置轴心点位置的方式,让UI空间在放大和缩小时,保持一边的位置不变
当轴心点位于一个边上时,那么那个边的位置是不会变得,当轴心点在一个角上的时候,那么构成这个角的两边在方法过程中的时候,位置是不会改变的
我就使用Anchors Position了
也就是以子物体的锚点为(0,0)点,然后计算子物体Pivot的位置
LocalPosition是以子物体的几何中心点为(0,0)点,计算Pivot的位置
通过锚点的设置对UI组件之间进行适配
锚点和中心点共同决定UI的位置,可以通过UI组件的中心点和它相对父物体的锚点保持相同位置的方式进行UI适配,将UI放到合适的位置
UI的基础组件Rect Transform
Anchors:锚点,用来标记位置的
Pivot:中心点
EventSystem 管理ugui事件
ugui射线响应非为,Graphic,2D,3D分为三种,
horizontal layout group水平布局
vertical layout group 垂直布局
horizontal layout group水平布局