OnRectTransformDimensionsChange 的拓展


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;
            
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值