UGUI研究院之UI粒子特效自适应缩放(二十二)

来源:互联网 发布:淘宝付款怎么取消订单 编辑:程序博客网 时间:2024/06/06 12:26

本文固定链接: http://www.xuanyusong.com/archives/4271
转载请注明: 雨松MOMO 2016年12月14日 于 雨松MOMO程序研究院 发表

我们UI自适应采用的是Canvas Scaler 设置 Expand模式。 那么UI可以很好的自适应屏幕,可是粒子特效就会出问题所以写下了这个脚本来自适应UI的粒子特效。

比如技能图标的特效光圈。
这里写图片描述

当屏幕缩放后,UI变小了,可是特效出问题了。
这里写图片描述

测试环境unity5.3.5

代码如下所示:

using UnityEngine;using System.Collections;using System.Collections.Generic;public class UIParticleScale : MonoBehaviour {    private List<ScaleData> scaleDatas = null;    void Awake()    {        scaleDatas = new List<ScaleData>();        foreach( ParticleSystem p in transform.GetComponentsInChildren<ParticleSystem>(true)){            scaleDatas.Add(new ScaleData(){transform = p.transform,beginScale = p.transform.localScale});        }    }    void Start ()     {        float designWidth = 1136;//开发时分辨率宽        float designHeight = 640;//开发时分辨率高        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(); //Editor下修改屏幕的大小实时预览缩放效果    }#endif    class ScaleData    {        public Transform transform;        public Vector3 beginScale = Vector3.one;    }}

转by:蒋志杰

阅读全文
0 0
原创粉丝点击