37 lines
1.3 KiB
C#
37 lines
1.3 KiB
C#
|
using UnityEngine;
|
|||
|
using UnityEngine.UI;
|
|||
|
public class UIParticleScaler : MonoBehaviour
|
|||
|
{
|
|||
|
private void Start()
|
|||
|
{
|
|||
|
//var scale = Mathf.Min(1f, UIManager.Instance().resolutionRatioScale);
|
|||
|
//MatchCurrentSize(scale);
|
|||
|
NeedCull();
|
|||
|
}
|
|||
|
|
|||
|
private void NeedCull()
|
|||
|
{
|
|||
|
Mask[] masks = gameObject.GetComponentsInParent<Mask>();
|
|||
|
if (masks.Length <= 0)
|
|||
|
return;
|
|||
|
Mask mask = masks[0];
|
|||
|
RectTransform rectTransform = mask.transform as RectTransform;
|
|||
|
if (rectTransform == null)
|
|||
|
return;
|
|||
|
Vector3[] corners = new Vector3[4];
|
|||
|
rectTransform.GetWorldCorners(corners);
|
|||
|
float minX = corners[0].x;
|
|||
|
float minY = corners[0].y;
|
|||
|
float maxX = corners[2].x;
|
|||
|
float maxY = corners[2].y;
|
|||
|
Renderer[] particlesSystems = gameObject.GetComponentsInChildren<Renderer>();
|
|||
|
for (int i = 0; i < particlesSystems.Length; i++)
|
|||
|
{
|
|||
|
particlesSystems[i].sharedMaterial.shader = Shader.Find("Zhanyou/Particles/AdditiveAlphaWriteMask");
|
|||
|
particlesSystems[i].sharedMaterial.SetFloat("_MinX", minX);
|
|||
|
particlesSystems[i].sharedMaterial.SetFloat("_MinY", minY);
|
|||
|
particlesSystems[i].sharedMaterial.SetFloat("_MaxX", maxX);
|
|||
|
particlesSystems[i].sharedMaterial.SetFloat("_MaxY", maxY);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|