本文固定連結: 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 = ;//開發時分辨率寬
float designHeight = ;//開發時分辨率高
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:蔣志傑