文章目录
OnRectTransformDimensionsChange是指当UI的RectTransform更改时的回调,只要继承UIBehavior即可获取回调。
1.粒子裁切
将粒子效果固定在ui范围呢,超过的裁切掉。
1.1 实时传递UI Rect变更信息
UI在不同的设备上以及可能的变化需求,需要当UI尺寸变化时实时获取到UI的变化,要获取到UI的变化只需要继承UIBehaviour即可根据OnRectTransformDimensionsChange获取到UI尺寸的变化,在根据RectTransform的GetWorldCorners方法获的UI的边界。
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
using UnityEngine.EventSystems;
[DisallowMultipleComponent]
[RequireComponent(typeof(Image))]
[AddComponentMenu("UI/UISuperMask")]
public class UISuperMask : UIBehaviour//Mask
{
private float m_LastminX=-1f,m_LastminY=-1f,m_LastmaxX=-1f,m_LastmaxY=-1f;
private float m_MinX=0f,m_MinY=0f,m_MaxX=0f,m_MaxY=0f;
private Vector3[] m_Corners = new Vector3[4];
private Image m_Image;
void GetWorldCorners()
{
//避免每次都计算
if(!Mathf.Approximately(m_LastminX,m_MinX) ||
!Mathf.Approximately(m_LastminY,m_MinY)||
!Mathf.Approximately(m_LastmaxX,m_MaxX)||
!Mathf.Approximately(m_LastmaxY,m_MaxY))
{
RectTransform rectTransform = transform as RectTransform;
rectTransform.GetWorldCorners (m_Corners);
m_LastminX = m_MinX;
m_LastminY = m_MinY;
m_LastmaxX = m_MaxX;
m_LastmaxY = m_MaxY;
m_MinX = m_Corners [0].x;