Files
JJBB/Assets/Project/Script/GUI/Base/UIParticleScaler.cs
2024-08-23 15:49:34 +08:00

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);
}
}
}