본문 바로가기
Game Programming

오랜만에 프레임웍 수정

by 게임혼 2015. 3. 30.

스프라이트 에니메이터에서 인스펙터 창 부분의 일부를 좀 편하게 가다듬었습니다.

일단 3가지 데이터만 수정하는 쪽으로
    SerializedProperty mDefaultAni;

    SerializedProperty mAnis;
    SerializedProperty mPlayAuto;

    void OnEnable()
    {
        Init();
    }
   
    void Init()
    {
        mDefaultAni = serializedObject.FindProperty("defaultAnimation");
        mAnis = serializedObject.FindProperty("animations");
        mPlayAuto = serializedObject.FindProperty("playAutomatically");
    }

    public override void OnInspectorGUI(){
        serializedObject.Update();
        EditorGUI.BeginChangeCheck();
        EditorGUILayout.PropertyField ( mDefaultAni, new GUIContent("Default Animation") );
        EditorGUILayout.PropertyField ( mAnis, true, new GUILayoutOption[]{});
        EditorGUILayout.PropertyField ( mPlayAuto, new GUIContent("Play Automatically") );

3가지 필드에서 변경점 체크

        if ( EditorGUI.EndChangeCheck() ) {
            bool isChanged = false;
            foreach ( Object obj in serializedObject.targetObjects ) {
                gh3DSpriteAnimation sp = obj as gh3DSpriteAnimation;
                if ( sp ) {
                    sp.defaultAnimation = mDefaultAni.objectReferenceValue as ghSpriteAnimationClip;
                    sp.playAutomatically = mPlayAuto.boolValue;
                    if(sp.defaultAnimation != null && sp.animations.Count < 2)    // 지정 없음 기본으로.
                    {
                        if(sp.animations.Count == 0)
                        {
                            sp.animations.Add(sp.defaultAnimation);
                            isChanged = true;
                        }
                        else if (sp.animations[0] == null)
                        {
                            sp.animations[0] = sp.defaultAnimation;
                            isChanged = true;
                        }
                    }
                    if(isChanged)
                    {
                        isChanged = false;
                    }
                    EditorUtility.SetDirty(sp);
                }
            }
        }
        serializedObject.ApplyModifiedProperties();
    }


하고 까먹고 하고 까먹고...사실 유니티에서 다른 엔진으로 갈아타는 걸 고려하는 중이라

더 심란하기도 합니다.




'Game Programming' 카테고리의 다른 글

Unity3d ugui - Pixel per unit  (0) 2015.05.03
핫스팟 추가!  (0) 2015.04.25
JPush 서비스  (0) 2014.12.05
Unity3D ClassNotFoundException on Android plugin  (0) 2014.11.16
Java enum  (0) 2014.09.21