Unity 編輯器擴展 粒子系統(tǒng)批量修改屬性

今天遇到一個需求,需要批量修改粒子系統(tǒng)的startDelay屬性值,Unity編輯器本來支持多選然后賦值,但是現在需要是要在原有的值上加(+)一個值.于是就想到自己擴展下編輯器支持這個操作.

代碼如下:

using UnityEngine;
using UnityEditor;

public class EffectEditorEx : EditorWindow
{
    private static EffectEditorEx m_editor_ex;

    [MenuItem("Duole/EffectEditorEx/Open",false,401)]
    static void OpenEditor()
    {
        if (m_editor_ex == null)
        {
            m_editor_ex = EditorWindow.GetWindow<EffectEditorEx>("EffectEditorEx", true);
            m_editor_ex.autoRepaintOnSceneChange = true;
        }
        m_editor_ex.Show(true);
    }


    private float m_start_delay = 0f;

    private void OnGUI()
    {
        GUILayout.Label("Start Delay:");
        m_start_delay = EditorGUILayout.FloatField(m_start_delay);
        if (GUILayout.Button("+"))
        {
            var items = Selection.GetFiltered<ParticleSystem>(SelectionMode.ExcludePrefab);
            foreach (var item in items)
            {
                var maindata = item.main;
                maindata.startDelay = new ParticleSystem.MinMaxCurve(maindata.startDelay.constant + m_start_delay);
            }
        }
        if (GUILayout.Button("x"))
        {
            var items = Selection.GetFiltered<ParticleSystem>(SelectionMode.ExcludePrefab);
            foreach (var item in items)
            {
                var maindata = item.main;
                maindata.startDelay = new ParticleSystem.MinMaxCurve(maindata.startDelay.constant * m_start_delay);
            }
        }
        if (GUILayout.Button("="))
        {
            var items = Selection.GetFiltered<ParticleSystem>(SelectionMode.ExcludePrefab);
            foreach (var item in items)
            {
                var maindata = item.main;
                maindata.startDelay = new ParticleSystem.MinMaxCurve(m_start_delay);
            }
        }
    }
}

這個過程中,坑的一點是ParticleSystem.main是只讀的struct,我找了半天沒找到賦值的方法.結果自己測試了下,發(fā)現直接修改這個ParticleSystem.main得到的MainModule中對應的值就可以了(一臉懵逼).

?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容