스프라이트 에니메이터에서 인스펙터 창 부분의 일부를 좀 편하게 가다듬었습니다.
일단 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 |