阜新网站推广,在线培训,wordpress嵌入代码,动易 网站首页一、事件监听接口
1、作用
用于实现类型长按、双击、拖拽等基础控件无法实现的功能 所有控件都能够添加更多的事件监听来处理对应的逻辑
2、事件监听接口类型
#xff08;1#xff09;常用事件接口 #xff08;2#xff09;不常用事件接口 3、使用事件监听接口
#…一、事件监听接口
1、作用
用于实现类型长按、双击、拖拽等基础控件无法实现的功能 所有控件都能够添加更多的事件监听来处理对应的逻辑
2、事件监听接口类型
1常用事件接口 2不常用事件接口 3、使用事件监听接口
1使用方法
a、引用命名控件using UnityEngine.EventSystems b、继承接口 c、实现接口中的内容 d、将该脚本挂载到想要监听自定义事件的UI控件上
2具体实现例子
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.EventSystems;public class L8 : MonoBehaviour,IPointerEnterHandler,IPointerExitHandler,IPointerDownHandler,IPointerUpHandler
{public void OnPointerEnter(PointerEventData eventData){print(鼠标进入);}public void OnPointerExit(PointerEventData eventData){print(鼠标离开);}public void OnPointerUp(PointerEventData eventData){print(鼠标抬起);}public void OnPointerDown(PointerEventData eventData){print(鼠标按下);}
}4、PointerEventData参数的关键内容 5、总结
1好处
可以实现一些长按、双击拖拽等功能
2坏处
不方便管理需要自己写脚本继承接口挂载到对应控件上比较麻烦
二、事件触发器
1、作用
EventTrigger集成了所有事件接口的脚本可以更加方便地位控件添加事件监听
2、如何使用事件触发器
1拖拽脚本进行关联 2使用代码进行添加关联
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.EventSystems;public class EnvTrigger : MonoBehaviour
{public EventTrigger envTrigger;// Start is called before the first frame updatevoid Start(){//声明一个希望监听的事件对象EventTrigger.Entry entry new EventTrigger.Entry();//声明 事件的类型entry.eventID EventTriggerType.PointerDown;//监听函数关联entry.callback.AddListener((data) {print(鼠标按下 data);});//将声明好的事件对象 加入到EventTrigger中envTrigger.triggers.Add(entry);}
}3、总结
EventTrigger可以让我们写更少的代码可以在面板类中处理面部控制的事件逻辑更加的面向对象便于管理
三、屏幕坐标转UI坐标
1、RectTransformUtility类
RectTransformUtility类是RectTransform的辅助类 主要用于进行一些坐标的转换 其中最重要的函数就是将屏幕控件上的点转换成UI本地坐标下的点
2、将屏幕坐标转换成UI本地坐标系下的点
1方法
RectTransformUtility.ScreenPointToLocalPointInRectangle(参数一参数二参数三参数四) 参数一相对父对象 参数二屏幕点 参数三摄像机 参数四最终得到的点 一般配合拖拽事件使用
public void OnDrag(PointerEventData eventData){Vector2 UIposition;RectTransformUtility.ScreenPointToLocalPointInRectangle(this.transform.parent as RectTransform,eventData.position,eventData.pressEventCamera,out UIposition);this.transform.localPosition UIposition;print(屏幕坐标 eventData.position);print(UI坐标 UIposition);}四、遮罩
1、作用
在不改变图片的情况下让图片在游戏中只显示其中一部分
2、使用方法
1关键组件 Mask
实现遮罩效果需要添加Mask组件 通过在父对象上添加Mask组件即可遮罩其子对象
2注意点
想要被遮罩的Image需要勾选Maskable 只要父对象添加了Mask组件那么所有的UI子对象都会被遮罩 遮罩父对象图片的制作不透明的地方显示透明的地方被遮罩
五、模型和粒子显示在UI之前
1、模型显示在UI之前
1方法一直接用摄像机渲染3D物体
Canvas的渲染模式不能是覆盖模式 摄像机模式和世界模式都可以让模型显示在UI之前Z轴元素在UI元素之前即可 注意点 摄像机模式时建议用专门的摄像机渲染UI相关 面板上的3D物体建议也用UI摄像机进行渲染
2方法二将3D物体渲染在图片上通过图片显示
专门使用一个摄像机渲染3D模型将其渲染内容输出到Render Texture上 类似小地图的制作方式 再将渲染的图显示在UI 该方式不管Canvas的渲染模型是哪种都可以使用
2、粒子特效显示在UI之前
粒子特效的显示和3D物体类似 注意点 在摄像模式下时可以在粒子组件的Renderer相关参数Order in Layer中改变排序层让粒子特效始终显示在其之前不受z轴影响
六、异形按钮
1、什么是异形按钮
图片形状不是传统矩形的按钮
2、如何让异形按钮能够准确点击
1通过添加子对象的形式 增加多个透明子对象将透明子对象拼凑出异形形状从而实现异形按钮
2通过代码改变图片的透明度相应阈值 public Image image;// Start is called before the first frame updatevoid Start(){image.alphaHitTestMinimumThreshold 0.1f;}七、CanvasGroup
1、作用
实现整体控制一个面板的淡入淡出或者整体禁用
2、主要属性