Berenger

ClassWindow.cs

Dec 6th, 2012
44
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. using UnityEngine;
  2. using UnityEditor;
  3. using System.Collections.Generic;
  4.  
  5. public class ClassWindow : EditorWindow
  6. {  
  7.     private static ClassWindow window;
  8.     public List< ClassA > list;
  9.    
  10.     [MenuItem ("My Window/Class")]
  11.     static void Init ()
  12.     {
  13.         window = EditorWindow.GetWindow (typeof (ClassWindow)) as ClassWindow;
  14.         Debug.Log("Init");
  15.     }
  16.    
  17.     private void OnGUI()
  18.     {
  19.         if( list == null )
  20.             list = new List<ClassA>();
  21.        
  22.         if( window == null )
  23.             Init();
  24.        
  25.         GUILayout.BeginArea( new Rect( 10, 10, window.position.width - 20, 75 ) );
  26.             GUILayout.BeginHorizontal();
  27.                 if( GUILayout.Button( "Add Class A", GUILayout.ExpandHeight(true) ) )
  28.                     list.Add( ScriptableObject.CreateInstance< ClassA >() );
  29.                
  30.                 if( GUILayout.Button( "Add Class B", GUILayout.ExpandHeight(true) ) )
  31.                     list.Add( ScriptableObject.CreateInstance< ClassB >() );
  32.        
  33.                 if( GUILayout.Button( "Clear", GUILayout.ExpandHeight(true) ) )
  34.                     list.Clear();
  35.                
  36.                 if( GUILayout.Button( "Save", GUILayout.ExpandHeight(true) ) )
  37.                 {
  38.                     ClassHolder asset = new ClassHolder(list);  //scriptable object
  39.                     Debug.Log( list.Count );
  40.                     AssetDatabase.CreateAsset(asset, "Assets/classes.asset");
  41.                     AssetDatabase.SaveAssets();
  42.                 }
  43.            
  44.                 if( GUILayout.Button( "Load", GUILayout.ExpandHeight(true) ) )
  45.                 {
  46.                     Object o = AssetDatabase.LoadAssetAtPath("Assets/classes.asset", typeof(ClassHolder));
  47.                     Debug.Log( "o : " + o.ToString() );
  48.                     ClassHolder classHolder = (ClassHolder)o;
  49.                     Debug.Log( "classHolder : " + classHolder );
  50.            
  51.                     if( classHolder != null )
  52.                         list = classHolder.list;
  53.                 }
  54.             GUILayout.EndHorizontal();
  55.         GUILayout.EndArea();
  56.        
  57.         // Once you compile again, this is going to display only 'AAAAAAAAA'
  58.         GUILayout.BeginArea( new Rect( 10, 110, 200, 200 ) );
  59.             GUILayout.Space(20);
  60.             GUILayout.Label( "Childcount : " + list.Count );
  61.             GUILayout.Space(20);
  62.             foreach( ClassA a in list )
  63.                 if( a != null )
  64.                     a.Draw();
  65.         GUILayout.EndArea();
  66.     }
  67. }
RAW Paste Data