首页 >Unity3D频道 >【Unity3D拓展编辑器】 > Unity3D研究院编辑器之获取粒子准确数量(三十)
2018
09-22

Unity3D研究院编辑器之获取粒子准确数量(三十)

最近在做一些辅助工具帮助特效师在开发特效的时候可以知道当前已经用了多少的粒子数,然而Unity也提供了这样的预览面板,但是看起来特别不方便。关键是很多特效都是粒子+mesh结合使用的。而且我又发现particleCount api提供获取粒子数量并不是很准,不能及时获取当前的粒子数量。

QQ20180922-101255@2x

通过如下代码获取当前粒子的数量,如果特效是粒子+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));
    }
}

 

最后编辑:
作者:雨松MOMO
专注移动互联网,Unity3D游戏开发
捐 赠写博客不易,如果您想请我喝一杯星巴克的话?就进来看吧!

Unity3D研究院编辑器之获取粒子准确数量(三十)》有 1 条评论

  1. evil__lee说:

    ParticleSystem 没有 CalculateEffectUIData 这个方法啊。

留下一个回复

你的email不会被公开。 必填项已用 * 标注。