我们UI自适应采用的是Canvas Scaler 设置 Expand模式。 那么UI可以很好的自适应屏幕,可是粒子特效就会出问题所以写下了这个脚本来自适应UI的粒子特效。
比如技能图标的特效光圈。
当屏幕缩放后,UI变小了,可是特效出问题了。
测试环境unity5.3.5
代码如下所示:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
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; } } |
欢迎大家测试~
- 本文固定链接: https://www.xuanyusong.com/archives/4271
- 转载请注明: 雨松MOMO 于 雨松MOMO程序研究院 发表
捐 赠写博客不易,如果您想请我喝一杯星巴克的话?就进来看吧!
非常感谢
MeshRenderer和ParticleSystem结合做的特效,用这种方式缩放的效果不太好,请问MOMO大师有什么解决方法么?
UI上的特效千万不要做meshRender不然没法做深度排序了。用多摄像机就太麻烦了。。 想办法让美术妥协吧。。
MeshRender可以随着屏幕宽高比自动缩放,但是改变ParticleSystem的transform的scale,粒子特效并不能按照比例完美的缩放。MeshRender改变sortingorder也可以做深度排序吧。
除非是一个片这样的可以,但是都是一个片了也没必要用meshRenderer了。。
好吧~那请问,对于ParticleSystem不能按照比例完美缩放,该怎样解决呢?或者还有其它适配方式?
不知道你尝试修改ParticleSystem下的StartSize能不能解决你的问题
MOMO大师,能不能把你实验的工程传上来,我自己测试的有问题(缩放的大小不对)。
Particle System 中,有一个选项叫做 Scaling Mode , 在里面选 Local 然后把Particle作为 Button的子节点,当屏幕自适应的时候,可以正常缩放。如果把Scaling Mode 选为 Hierarchy, 则粒子Size完全依赖 Transform.scale, 将粒子拖拽成为Button的子节点后,调整粒子size到合适,当屏幕自适应的时候,粒子则跟随Button的大小变化,亲测可用,不知是否有疏忽之处,忘指教。
expand 我测试这两个好像还是有问题。
但是我发现我用的是 Unity 5.4.3 2f, 可能是这个版本有修正吧…..
谢谢, 抽空我在看看。 我们现在的版本还是unity5.3
非常荣幸能引起你的关注。
这个很有效果
如果粒子光效有初始速度或初始力的话,就会有问题
没这样的UI特效吧。 我还有一套做3D粒子特效缩放的方案。。
这种好像只能适应Mesh类的粒子特效
UI上的都可以吧。。
正好要用到了