一、渲染脚本
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
// 网格特效渲染
public class UIGridRenderingScale : MonoBehaviour
{
private List<ScaleData> scaleDatas = new List<ScaleData>();
private void Awake()
{
foreach (ParticleSystem p in transform.GetComponentsInChildren<ParticleSystem>(true))
{
scaleDatas.Add(new ScaleData() {
transform = p.transform, beginScale = p.transform.localScale});
}
}
// Start is called before the first frame update
void Start()
{
float designWidth = 1080;
float designHeight = 1920;
float designScale = designWidth / designHeight;
float scaleRate = (float)Screen.width / (float)Screen.height;
foreach (ScaleData scale in scaleDatas)
{
if (scale.transform != null)
{
if (scaleRate < designScale)
{
float scaleFactor = scaleRate / designScale;
scale.transform.localScale = scale.beginScale * scaleFactor;
}
else
{
scale.transform.localScale = scale.beginScale;
}
}
}
}
#if UNITY_EDITOR
void Update()
{
Start();
}
#endif
class ScaleData {
public Transform transform;
public Vector3 beginScale = Vector3.one;
}
}
二、使用方式
直接挂载在对应的渲染器上面即可