コード例 #1
0
ファイル: TMPRuleInspector.cs プロジェクト: baba-s/UniTMPRule
        //==============================================================================
        // 関数
        //==============================================================================
        /// <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);
            }
        }
コード例 #2
0
        /// <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);
        }