/**
         * Inspector上のGUI表示.
         */
        public override void OnInspectorGUI()
        {
            GUILayout.Space(5);

            // 本体の取得
            obj = target as MonobitAutoLoginTemplate;

            // 標題の表示
            EditorGUILayout.LabelField("Instantiate Player", EditorStyles.boldLabel);

            EditorGUI.indentLevel = 2;

            // プレハブの登録
            obj.InstantiatePrefab = EditorGUILayout.ObjectField("Prefab", obj.InstantiatePrefab, typeof(GameObject), false) as GameObject;

            // 登録したプレハブが Resources 内に存在するかどうかを調べる
            if (obj.InstantiatePrefab != null)
            {
                GameObject tmp = Resources.Load(obj.InstantiatePrefab.name, typeof(GameObject)) as GameObject;
                if (tmp == null)
                {
                    EditorGUILayout.HelpBox("This Prefab is not included in the 'Resources' folder .", MessageType.Warning, true);
                }
            }

            // 座標・回転量を入力
            obj.camPosition = EditorGUILayout.Vector3Field("cam position", obj.camPosition);
            Vector3 camRotation = obj.camRotation.eulerAngles;

            camRotation = EditorGUILayout.Vector3Field("cam rotation", camRotation);
            obj.camRotation.eulerAngles = camRotation;

            EditorGUI.indentLevel = 0;
            GUILayout.Space(5);

            // データの更新
            if (GUI.changed)
            {
                serializedObject.ApplyModifiedProperties();
                EditorUtility.SetDirty(obj);
                MonobitEditor.MarkSceneDirty();
            }
        }
        /**
         * Inspector上のGUI表示.
         */
        public override void OnInspectorGUI()
        {
            // 本体の取得
            obj = target as MonobitPlayerMoveTemplate;
            if (!EditorApplication.isPlaying)
            {
                // MonobitObservedComponentにMonobitTransformViewとMonobitAnimatorViewを自動追加
                AddMonobitObserverdComponent();

                // キー操作とアニメーションパラメータの登録
                obj.EntryKeyAndAnim();
            }

            GUILayout.Space(5);

            // 標題と追加の表示
            EditorGUILayout.LabelField("Key And Anim Settings List", EditorStyles.boldLabel);

            GUI.enabled           = !EditorApplication.isPlaying;
            EditorGUI.indentLevel = 2;

            // 各リスト項目と削除ボタンの表示
            for (int i = 0; i < obj.KeyAndAnimSettings.Count; ++i)
            {
                obj.KeyAndAnimSettings[i].keyCode = (MonobitPlayerMoveTemplate.KeyCode)EditorGUILayout.EnumPopup("Key Assign", obj.KeyAndAnimSettings[i].keyCode);
                if (obj.KeyAndAnimSettings[i].keyCode == MonobitPlayerMoveTemplate.KeyCode.Horizontal || obj.KeyAndAnimSettings[i].keyCode == MonobitPlayerMoveTemplate.KeyCode.Vertical)
                {
                    obj.KeyAndAnimSettings[i].axisAction = (MonobitPlayerMoveTemplate.AxisAction)EditorGUILayout.EnumPopup("Axis Action", obj.KeyAndAnimSettings[i].axisAction);
                }
                else
                {
                    obj.KeyAndAnimSettings[i].buttonAction = (MonobitPlayerMoveTemplate.ButtonAction)EditorGUILayout.EnumPopup("Button Action", obj.KeyAndAnimSettings[i].buttonAction);
                }

                obj.KeyAndAnimSettings[i].actionType = (MonobitPlayerMoveTemplate.ActionType)EditorGUILayout.EnumPopup("Action Type", obj.KeyAndAnimSettings[i].actionType);
                switch (obj.KeyAndAnimSettings[i].actionType)
                {
                case MonobitPlayerMoveTemplate.ActionType.Move:
                {
                    obj.KeyAndAnimSettings[i].Position = EditorGUILayout.Vector3Field("Position Increase", obj.KeyAndAnimSettings[i].Position);
                }
                break;

                case MonobitPlayerMoveTemplate.ActionType.Rotate:
                {
                    obj.KeyAndAnimSettings[i].Rotation = EditorGUILayout.Vector3Field("Rotation Increase", obj.KeyAndAnimSettings[i].Rotation);
                }
                break;

                case MonobitPlayerMoveTemplate.ActionType.ChangeAnimLayerWeight:
                {
                    List <string> name = new List <string>();
                    foreach (var layer in obj.KeyAndAnimSettings[i].layerInfo)
                    {
                        name.Add(layer.m_Name);
                    }
                    obj.KeyAndAnimSettings[i].SelectLayer = EditorGUILayout.Popup("Select Anim Layer", obj.KeyAndAnimSettings[i].SelectLayer, name.ToArray());
                    var selected = obj.KeyAndAnimSettings[i].layerInfo[obj.KeyAndAnimSettings[i].SelectLayer];
                    selected.m_animWeight = EditorGUILayout.FloatField("Anim Weight[" + selected.m_Name + "]", selected.m_animWeight);
                }
                break;

                case MonobitPlayerMoveTemplate.ActionType.ChangeAnimParam:
                {
                    List <string> name = new List <string>();
                    foreach (var param in obj.KeyAndAnimSettings[i].paramInfo)
                    {
                        name.Add(param.m_Name);
                    }
                    obj.KeyAndAnimSettings[i].SelectParam = EditorGUILayout.Popup("Select Anim Param", obj.KeyAndAnimSettings[i].SelectParam, name.ToArray());

                    var selected = obj.KeyAndAnimSettings[i].paramInfo[obj.KeyAndAnimSettings[i].SelectParam];
                    switch (selected.m_Type)
                    {
                    case MonobitAnimatorView.AnimatorControllerParameterType.Bool:
                        selected.m_boolValue = EditorGUILayout.Toggle("Anim Flag[" + selected.m_Name + "]", selected.m_boolValue);
                        break;

                    case MonobitAnimatorView.AnimatorControllerParameterType.Float:
                        selected.m_floatValue = EditorGUILayout.FloatField("Anim Value[" + selected.m_Name + "]", selected.m_floatValue);
                        break;

                    case MonobitAnimatorView.AnimatorControllerParameterType.Int:
                        selected.m_intValue = EditorGUILayout.IntField("Anim Value[" + selected.m_Name + "]", selected.m_intValue);
                        break;

                    case MonobitAnimatorView.AnimatorControllerParameterType.Trigger:
                        break;
                    }
                }
                break;

                case MonobitPlayerMoveTemplate.ActionType.Instantiate:
                {
                    obj.KeyAndAnimSettings[i].instantiatePrefab = EditorGUILayout.ObjectField("Prefab", obj.KeyAndAnimSettings[i].instantiatePrefab, typeof(GameObject), false) as GameObject;

                    // 登録したプレハブが Resources 内に存在するかどうかを調べる
                    if (obj.KeyAndAnimSettings[i].instantiatePrefab != null)
                    {
                        GameObject tmp = Resources.Load(obj.KeyAndAnimSettings[i].instantiatePrefab.name, typeof(GameObject)) as GameObject;
                        if (tmp == null)
                        {
                            EditorGUILayout.HelpBox("This Prefab is not included in the 'Resources' folder .", MessageType.Warning, true);
                        }
                    }

                    obj.KeyAndAnimSettings[i].instantiateType = (MonobitPlayerMoveTemplate.InstantiateType)EditorGUILayout.EnumPopup("Instantiate Type", obj.KeyAndAnimSettings[i].instantiateType);
                    switch (obj.KeyAndAnimSettings[i].instantiateType)
                    {
                    case MonobitPlayerMoveTemplate.InstantiateType.Absolute:
                    {
                        obj.KeyAndAnimSettings[i].Position = EditorGUILayout.Vector3Field("Absolute Position", obj.KeyAndAnimSettings[i].Position);
                        obj.KeyAndAnimSettings[i].Rotation = EditorGUILayout.Vector3Field("Absolute Rotation", obj.KeyAndAnimSettings[i].Rotation);
                    }
                    break;

                    case MonobitPlayerMoveTemplate.InstantiateType.Relative:
                    {
                        obj.KeyAndAnimSettings[i].Position = EditorGUILayout.Vector3Field("Relative Position", obj.KeyAndAnimSettings[i].Position);
                        obj.KeyAndAnimSettings[i].Rotation = EditorGUILayout.Vector3Field("Relative Rotation", obj.KeyAndAnimSettings[i].Rotation);
                    }
                    break;

                    case MonobitPlayerMoveTemplate.InstantiateType.RandomAbsolute:
                    {
                        obj.KeyAndAnimSettings[i].PositionMin = EditorGUILayout.Vector3Field("Min Position", obj.KeyAndAnimSettings[i].PositionMin);
                        obj.KeyAndAnimSettings[i].PositionMax = EditorGUILayout.Vector3Field("Max Position", obj.KeyAndAnimSettings[i].PositionMax);
                        obj.KeyAndAnimSettings[i].RotationMin = EditorGUILayout.Vector3Field("Min Rotation", obj.KeyAndAnimSettings[i].RotationMin);
                        obj.KeyAndAnimSettings[i].RotationMax = EditorGUILayout.Vector3Field("Max Rotation", obj.KeyAndAnimSettings[i].RotationMax);
                    }
                    break;
                    }
                }
                break;
                }

                GUILayout.BeginHorizontal();
                GUILayout.FlexibleSpace();
                if (GUILayout.Button("Remove", GUILayout.Width(75.0f)))
                {
                    obj.KeyAndAnimSettings.RemoveAt(i);
                }
                GUILayout.EndHorizontal();
            }

            // 追加ボタンの表示
            GUILayout.BeginHorizontal();
            GUILayout.Space(30);
            if (GUILayout.Button("Add Key And Anim Settings List Column"))
            {
                obj.KeyAndAnimSettings.Add(new MonobitPlayerMoveTemplate.MonobitKeySettings());
            }
            GUILayout.EndHorizontal();

            GUI.enabled = true;

            EditorGUI.indentLevel = 0;
            GUILayout.Space(5);

            // データの更新
            if (GUI.changed)
            {
                serializedObject.ApplyModifiedProperties();
                EditorUtility.SetDirty(obj);
                MonobitEditor.MarkSceneDirty();
            }
        }