//============================================================================== // 関数 //============================================================================== /// <summary> /// GUI を表示する時に呼び出されます /// </summary> public override void OnInspectorGUI() { if (m_settings == null) { m_settings = TMPRuleEditorUtils.GetSettings(); if (m_settings == null) { return; } } var tmpRuleSelf = ( TMPRule )target; var list = m_settings.List; var index = Array.FindIndex(list, x => x.Name == tmpRuleSelf.RuleName) + 1; // プルダウンメニューの先頭に「無効」を追加 var invalidOption = new[] { TMPRule.INVALID_RULE_NAME }; var options = invalidOption.Concat(list.Select(x => x.Comment)).ToArray(); EditorGUI.BeginChangeCheck(); index = EditorGUILayout.Popup("ルール名", index, options); if (GUILayout.Button("設定ファイル")) { EditorGUIUtility.PingObject(m_settings); } if (!EditorGUI.EndChangeCheck()) { return; } var ruleName = index == 0 ? TMPRule.INVALID_RULE_NAME : list[index - 1].Name ; // 複数選択されている場合に、選択されている // すべてのオブジェクトのパラメータを更新するために targets を参照 foreach (var tmpRule in targets.OfType <TMPRule>()) { var serializedObject = new SerializedObject(tmpRule); var serializedProperty = serializedObject.FindProperty("m_ruleName"); serializedProperty.stringValue = ruleName; serializedObject.ApplyModifiedProperties(); TMPRuleEditorUtils.Apply(m_settings, tmpRule); } }
/// <summary> /// 指定された TMPRule の設定を反映します /// </summary> private static void Apply(TMPRule tmpRule) { if (m_settings == null) { m_settings = TMPRuleEditorUtils.GetSettings(); if (m_settings == null) { return; } } TMPRuleEditorUtils.Apply(m_settings, tmpRule); }