Inheritance: UnityEngine.ScriptableObject
示例#1
0
    // ------------------------------------------------------------------
    // Desc:
    // ------------------------------------------------------------------

    static void CreateDB()
    {
        dbPath = EditorPrefs.GetString(dbKey, dbPath);

        // first create db directory if not exists
        string dbDir = Path.GetDirectoryName(dbPath);

        if (new DirectoryInfo(dbDir).Exists == false)
        {
            Directory.CreateDirectory(dbDir);
        }

        // get sprite animation clip db, if not found, create one
        db = (exSpriteAnimationDB)AssetDatabase.LoadAssetAtPath(dbPath, typeof(exSpriteAnimationDB));
        if (db == null)
        {
            db = ScriptableObject.CreateInstance <exSpriteAnimationDB>();
            AssetDatabase.CreateAsset(db, dbPath);
            needSync = true;
        }
        else
        {
            db = (exSpriteAnimationDB)AssetDatabase.LoadAssetAtPath(dbPath, typeof(exSpriteAnimationDB));
        }

        //
        if (version != db.curVersion)
        {
            db.curVersion = version;
            needSync      = true;
            EditorUtility.SetDirty(db);
        }
    }
    // ------------------------------------------------------------------
    // Desc:
    // ------------------------------------------------------------------

    public override void OnInspectorGUI()
    {
        if (target != curEditTarget)
        {
            curEditTarget = target as exSpriteAnimationDB;
        }
        EditorGUIUtility.LookLikeInspector();
        EditorGUILayout.Space();

        // sync button
        EditorGUI.indentLevel = 1;
        if (GUILayout.Button("Sync", GUILayout.Width(100)))
        {
            exSpriteAnimationDB.ForceSync();
        }

        // rebuild all
        if (GUILayout.Button("Build All", GUILayout.Width(100)))
        {
            exSpriteAnimationDB.BuildAll();
        }

        // show version
        GUI.enabled = false;
        EditorGUILayout.LabelField("version", curEditTarget.curVersion.ToString());
        GUI.enabled = true;

        // show spAnimClipGUIDs
        EditorGUI.indentLevel  = 0;
        curEditTarget.showData = EditorGUILayout.Foldout(curEditTarget.showData, "SpriteAnimClip Asset List");
        if (curEditTarget.showData)
        {
            GUI.enabled           = false;
            EditorGUI.indentLevel = 2;
            for (int i = 0; i < curEditTarget.spAnimClipGUIDs.Count; ++i)
            {
                string guid           = curEditTarget.spAnimClipGUIDs[i];
                string path           = AssetDatabase.GUIDToAssetPath(guid);
                string spAnimClipName = Path.GetFileNameWithoutExtension(path);
                EditorGUILayout.LabelField("[" + i + "]", spAnimClipName);
            }
            GUI.enabled = true;
        }

        // show texture to AtlasElement table
        EditorGUI.indentLevel   = 0;
        curEditTarget.showTable = EditorGUILayout.Foldout(curEditTarget.showTable, "exAtlasInfo <-> SpriteAnimClip List");
        if (curEditTarget.showTable)
        {
            GUI.enabled = false;
            foreach (KeyValuePair <string, List <string> > pair in exSpriteAnimationDB.GetTexGUIDToAnimClipGUIDs())
            {
                string textureName = Path.GetFileNameWithoutExtension(AssetDatabase.GUIDToAssetPath(pair.Key));
                EditorGUI.indentLevel = 2;
                EditorGUILayout.LabelField(textureName, "");

                // SpriteAnimClips
                EditorGUI.indentLevel = 3;
                List <string> spAnimClipGUIDs = pair.Value;
                for (int i = 0; i < spAnimClipGUIDs.Count; ++i)
                {
                    string spAnimClipName = Path.GetFileNameWithoutExtension(AssetDatabase.GUIDToAssetPath(spAnimClipGUIDs[i]));
                    EditorGUILayout.LabelField("[" + i + "]", spAnimClipName);
                }
                EditorGUILayout.Space();
            }
            GUI.enabled = true;
        }
        EditorGUI.indentLevel = 0;

        //
        if (GUI.changed)
        {
            EditorUtility.SetDirty(curEditTarget);
        }
    }
    // ------------------------------------------------------------------
    // Desc:
    // ------------------------------------------------------------------
    public override void OnInspectorGUI()
    {
        if ( target != curEditTarget ) {
            curEditTarget = target as exSpriteAnimationDB;
        }
        EditorGUIUtility.LookLikeInspector ();
        EditorGUILayout.Space();

        // sync button
        EditorGUI.indentLevel = 1;
        if ( GUILayout.Button ("Sync", GUILayout.Width(100)) ) {
            exSpriteAnimationDB.ForceSync();
        }

        // rebuild all
        if ( GUILayout.Button ("Build All", GUILayout.Width(100)) ) {
            exSpriteAnimationDB.BuildAll();
        }

        // show version
        GUI.enabled = false;
        EditorGUILayout.LabelField( "version", curEditTarget.curVersion.ToString() );
        GUI.enabled = true;

        // show spAnimClipGUIDs
        EditorGUI.indentLevel = 0;
        curEditTarget.showData = EditorGUILayout.Foldout(curEditTarget.showData, "SpriteAnimClip Asset List");
        if ( curEditTarget.showData ) {
            GUI.enabled = false;
            EditorGUI.indentLevel = 2;
            for ( int i = 0; i < curEditTarget.spAnimClipGUIDs.Count; ++i ) {
                string guid = curEditTarget.spAnimClipGUIDs[i];
                string path = AssetDatabase.GUIDToAssetPath(guid);
                string spAnimClipName = Path.GetFileNameWithoutExtension (path);
                EditorGUILayout.LabelField( "[" + i + "]",  spAnimClipName );
            }
            GUI.enabled = true;
        }

        // show texture to AtlasElement table
        EditorGUI.indentLevel = 0;
        curEditTarget.showTable = EditorGUILayout.Foldout(curEditTarget.showTable, "exAtlasInfo <-> SpriteAnimClip List");
        if ( curEditTarget.showTable ) {
            GUI.enabled = false;
            foreach ( KeyValuePair<string,List<string> > pair in exSpriteAnimationDB.GetTexGUIDToAnimClipGUIDs() ) {
                string textureName = Path.GetFileNameWithoutExtension ( AssetDatabase.GUIDToAssetPath(pair.Key) );
                EditorGUI.indentLevel = 2;
                EditorGUILayout.LabelField ( textureName, "" );

                // SpriteAnimClips
                EditorGUI.indentLevel = 3;
                List<string> spAnimClipGUIDs = pair.Value;
                for ( int i = 0; i < spAnimClipGUIDs.Count; ++i ) {
                    string spAnimClipName = Path.GetFileNameWithoutExtension ( AssetDatabase.GUIDToAssetPath(spAnimClipGUIDs[i]) );
                    EditorGUILayout.LabelField ( "[" + i + "]", spAnimClipName );
                }
                EditorGUILayout.Space();
            }
            GUI.enabled = true;
        }
        EditorGUI.indentLevel = 0;

        //
        if ( GUI.changed ) {
            EditorUtility.SetDirty(curEditTarget);
        }
    }
示例#4
0
    // ------------------------------------------------------------------
    // Desc:
    // ------------------------------------------------------------------
    static void CreateDB()
    {
        dbPath = EditorPrefs.GetString( dbKey, dbPath );

        // first create db directory if not exists
        string dbDir = Path.GetDirectoryName(dbPath);
        if ( new DirectoryInfo(dbDir).Exists == false ) {
            Directory.CreateDirectory (dbDir);
        }

        // get sprite animation clip db, if not found, create one
        db = (exSpriteAnimationDB)AssetDatabase.LoadAssetAtPath( dbPath, typeof(exSpriteAnimationDB) );
        if ( db == null ) {
            db = ScriptableObject.CreateInstance<exSpriteAnimationDB>();
            AssetDatabase.CreateAsset( db, dbPath );
            needSync = true;
        }
        else {
            db = (exSpriteAnimationDB)AssetDatabase.LoadAssetAtPath( dbPath, typeof(exSpriteAnimationDB) );
        }

        //
        if ( version != db.curVersion ) {
            db.curVersion = version;
            needSync = true;
            EditorUtility.SetDirty(db);
        }
    }