内容简介:最近在做一些辅助工具帮助特效师在开发特效的时候可以知道当前已经用了多少的粒子数,然而Unity也提供了这样的预览面板,但是看起来特别不方便。关键是很多特效都是粒子+mesh结合使用的。而且我又发现particleCount api提供获取粒子数量并不是很准,不能及时获取当前的粒子数量。通过如下代码获取当前粒子的数量,如果特效是粒子+mesh的形式还可以把贴图数量、模型参数等信息列出来,方便特效师及时查看自己做的特效的效率。注意此段代码只能执行在编辑模式下。
最近在做一些辅助 工具 帮助特效师在开发特效的时候可以知道当前已经用了多少的粒子数,然而Unity也提供了这样的预览面板,但是看起来特别不方便。关键是很多特效都是粒子+mesh结合使用的。而且我又发现particleCount api提供获取粒子数量并不是很准,不能及时获取当前的粒子数量。
通过如下代码获取当前粒子的数量,如果特效是粒子+mesh的形式还可以把贴图数量、模型参数等信息列出来,方便特效师及时查看自己做的特效的效率。注意此段代码只能执行在编辑模式下。
using System.Reflection; using UnityEngine; public class Test : MonoBehaviour { private ParticleSystem [] m_ParticleSystems; private MethodInfo m_CalculateEffectUIDataMethod; private int m_ParticleCount = 0; void Start() { m_ParticleSystems = GetComponentsInChildren<ParticleSystem>(); m_CalculateEffectUIDataMethod = typeof(ParticleSystem).GetMethod("CalculateEffectUIData", BindingFlags.Instance | BindingFlags.NonPublic); } private void Update() { m_ParticleCount = 0; foreach (var ps in m_ParticleSystems) { int count = 0; object[] invokeArgs = new object[] { count, 0.0f, Mathf.Infinity }; m_CalculateEffectUIDataMethod.Invoke(ps, invokeArgs); count = (int)invokeArgs[0]; m_ParticleCount += count; } } private void OnGUI() { GUILayout.Label(string.Format("<size=50>m_ParticleCount : {0}</size>", m_ParticleCount)); } }
- 本文固定链接: https://www.xuanyusong.com/archives/4496
- 转载请注明:雨松MOMO 于雨松MOMO程序研究院 发表
雨松MOMO提醒您:亲,如果您觉得本文不错,快快将这篇文章分享出去吧 。另外请点击网站顶部彩色广告或者捐赠支持本站发展,谢谢!
捐 赠 如果您愿意花10块钱请我喝一杯咖啡的话,请用手机扫描二维码即可通过支付宝直接向我捐款哦。
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- 深度高能粒子对撞追踪:Kaggle TrackML粒子追踪挑战赛亚军访谈
- 粒子滤波Matlab示例
- 粒子滤波Matlab示例
- 粒子系统的设计
- CAEmitterLayer 粒子动画
- 学习 PixiJS — 粒子效果
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
程序员的职业素养
Robert C.Martin / 章显洲、余晟 / 人民邮电出版社 / 2012-9-1 / 49.00元
本书是编程大师Bob 大叔40 余年编程生涯的心得体会, 讲解成为真正专业的程序员需要什么样的态度、原则,需要采取什么样的行动。作者以自己以及身边的同事走过的弯路、犯过的错误为例,意在为后来人引路,助其职业生涯迈上更高台阶。 本书适合所有程序员,也可供所有想成为具备职业素养的职场人士参考。一起来看看 《程序员的职业素养》 这本书的介绍吧!