public override void OnInspectorGUI() { bool bShowAll = false; bool bHideAll = false; EffectController effectCtrl = target as EffectController; EditorGUILayout.BeginVertical(); EditorGUILayout.BeginHorizontal(); EditorGUI.BeginDisabledGroup(effectCtrl.m_bLockNums); effectCtrl.m_nNumOfEffects = EditorGUILayout.IntField("Effect Count", effectCtrl.m_nNumOfEffects); EditorGUI.EndDisabledGroup(); effectCtrl.m_bLockNums = EditorGUILayout.Toggle(effectCtrl.m_bLockNums); if (GUILayout.Button("One Click Expansion")) { bShowAll = true; } else { bShowAll = false; } if (GUILayout.Button("One Click Close")) { bHideAll = true; } else { bHideAll = false; } EditorGUILayout.EndHorizontal(); int nCnt = 0; for (; nCnt < effectCtrl.m_nNumOfEffects; nCnt++) { if (nCnt >= effectCtrl.m_kEffectGenList.Count) { effectCtrl.m_kEffectGenList.Add(new EffectData()); } EffectData effectData = effectCtrl.m_kEffectGenList [nCnt]; if (effectData == null) { continue; } if (bShowAll) { effectData.m_bFoldoutOpen = true; } if (bHideAll) { effectData.m_bFoldoutOpen = false; } effectData.m_bFoldoutOpen = EditorGUILayout.Foldout(effectData.m_bFoldoutOpen, ("Effect " + nCnt + " Setting")); if (effectData.m_bFoldoutOpen) { effectData.m_fTimeSec = EditorGUILayout.FloatField("Shot Time", effectData.m_fTimeSec); effectData.m_goEffect = EditorGUILayout.ObjectField("Obj", effectData.m_goEffect, typeof(GameObject), true) as GameObject; EditorGUI.indentLevel++; /// Transform panel. effectData.m_bTransformFoldout = EditorGUILayout.Foldout(effectData.m_bTransformFoldout, "Transform"); if (effectData.m_bTransformFoldout) { EditorGUI.indentLevel++; EditorGUI.BeginChangeCheck(); GUILayout.BeginHorizontal(); if (GUILayout.Button("P", GUILayout.Width(25), GUILayout.ExpandWidth(false))) { effectData.m_goPos = new Vector3(0, 0, 0); } effectData.m_goPos = EditorGUILayout.Vector3Field("", effectData.m_goPos); GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(); if (GUILayout.Button("R", GUILayout.Width(25), GUILayout.ExpandWidth(false))) { effectData.m_goRotation = new Vector3(0, 0, 0); } effectData.m_goRotation = EditorGUILayout.Vector3Field("", effectData.m_goRotation); GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(); if (GUILayout.Button("S", GUILayout.Width(25), GUILayout.ExpandWidth(false))) { effectData.m_goScale = new Vector3(0, 0, 0); } effectData.m_goScale = EditorGUILayout.Vector3Field("", effectData.m_goScale); GUILayout.EndHorizontal(); if (EditorGUI.EndChangeCheck()) { effectCtrl.UpdateEffectTransformByIndex(nCnt); } EditorGUI.indentLevel--; } ParticleSystem particleSystem = effectCtrl.CheckHasParticleSystem(nCnt); RenderEffect renderEffect = effectCtrl.CheckHasRenderEffectScript(nCnt); if (particleSystem == null) { effectData.m_bSortingFoldout = EditorGUILayout.Foldout(effectData.m_bSortingFoldout, "Sorting Layer"); /// Sorting panel. if (effectData.m_bSortingFoldout) { EditorGUI.indentLevel++; EditorGUI.BeginChangeCheck(); EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField("Sorting Layer"); effectData.m_SortingLayerID = EditorGUILayout.IntPopup(effectData.m_SortingLayerID, m_LayerName, m_LayerID); EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField("Sorting Order"); effectData.m_SortingOrder = EditorGUILayout.IntField(effectData.m_SortingOrder); EditorGUILayout.EndHorizontal(); if (EditorGUI.EndChangeCheck()) { if (renderEffect != null) { renderEffect.m_SortingLayerID = effectData.m_SortingLayerID; renderEffect.m_SortingOrder = effectData.m_SortingOrder; renderEffect.m_EnableSetSortLayer = true; renderEffect.UpdateRenderLayer(); } else { effectCtrl.UPdateRenderLayerByIndex(nCnt); } } EditorGUI.indentLevel--; } } EditorGUI.indentLevel--; } if (nCnt != effectCtrl.m_nNumOfEffects - 1) { EditorGUILayout.LabelField("", GUILayout.Height(2)); GUILayout.Box("", GUILayout.ExpandWidth(true), GUILayout.Height(1)); EditorGUILayout.LabelField("", GUILayout.Height(2)); } } for (; nCnt < effectCtrl.m_kEffectGenList.Count; nCnt++) { effectCtrl.m_kEffectGenList.RemoveAt(nCnt); } EditorGUILayout.EndVertical(); }