unity工具类篇 网格特效渲染适配

一、渲染脚本

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



二、使用方式

直接挂载在对应的渲染器上面即可

猜你喜欢

转载自blog.csdn.net/weixin_44720673/article/details/126045758
今日推荐