Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using UnityEngine;
- using UnityEditor;
- using System.Collections.Generic;
- public class ClassWindow : EditorWindow
- {
- private static ClassWindow window;
- public List< ClassA > list;
- [MenuItem ("My Window/Class")]
- static void Init ()
- {
- window = EditorWindow.GetWindow (typeof (ClassWindow)) as ClassWindow;
- Debug.Log("Init");
- }
- private void OnGUI()
- {
- if( list == null )
- list = new List<ClassA>();
- if( window == null )
- Init();
- GUILayout.BeginArea( new Rect( 10, 10, window.position.width - 20, 75 ) );
- GUILayout.BeginHorizontal();
- if( GUILayout.Button( "Add Class A", GUILayout.ExpandHeight(true) ) )
- list.Add( ScriptableObject.CreateInstance< ClassA >() );
- if( GUILayout.Button( "Add Class B", GUILayout.ExpandHeight(true) ) )
- list.Add( ScriptableObject.CreateInstance< ClassB >() );
- if( GUILayout.Button( "Clear", GUILayout.ExpandHeight(true) ) )
- list.Clear();
- if( GUILayout.Button( "Save", GUILayout.ExpandHeight(true) ) )
- {
- ClassHolder asset = new ClassHolder(list); //scriptable object
- Debug.Log( list.Count );
- AssetDatabase.CreateAsset(asset, "Assets/classes.asset");
- AssetDatabase.SaveAssets();
- }
- if( GUILayout.Button( "Load", GUILayout.ExpandHeight(true) ) )
- {
- Object o = AssetDatabase.LoadAssetAtPath("Assets/classes.asset", typeof(ClassHolder));
- Debug.Log( "o : " + o.ToString() );
- ClassHolder classHolder = (ClassHolder)o;
- Debug.Log( "classHolder : " + classHolder );
- if( classHolder != null )
- list = classHolder.list;
- }
- GUILayout.EndHorizontal();
- GUILayout.EndArea();
- // Once you compile again, this is going to display only 'AAAAAAAAA'
- GUILayout.BeginArea( new Rect( 10, 110, 200, 200 ) );
- GUILayout.Space(20);
- GUILayout.Label( "Childcount : " + list.Count );
- GUILayout.Space(20);
- foreach( ClassA a in list )
- if( a != null )
- a.Draw();
- GUILayout.EndArea();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement