From Unify Community Wiki
Jump to: navigation, search

UPDATE: This other one is better: CreateScriptableObjectAsset

This is a confusing thing to illustrate, so hopefully this code example can speak for itself.

Save this script as ExampleSavedScriptableObject.cs in your Editor folder:

using System.Collections.Generic;
using UnityEditor;
class ExampleSavedScriptableObject
    [MenuItem("Custom/Create a MyExampleScriptableObjectClass ScriptableObject")]
    static void Execute()
        MyExampleScriptableObjectClass tmp = new MyExampleScriptableObjectClass();
		tmp.size = "{512, 64}";
		tmp.sizeWidth = 512;
		tmp.sizeHeight = 64;		
        List<MyExampleClass> l = new List<MyExampleClass>();
		l.Add(new MyExampleClass("icon_OF_logo.png",     "{64, 64}",  "{0, -0}",   0, -0, false));		
		l.Add(new MyExampleClass("icon_trophy.png",      "{64, 64}",  "{0, -1}",   0, -1, true ));
		l.Add(new MyExampleClass("notification_tab.png", "{480, 71}", "{-4, 12}", -4, 12, true ));
        tmp.list = l;
        AssetDatabase.CreateAsset(tmp, "Assets/MyExampleScriptableObjectClassPrefab_renameme.asset");

and this one elsewhere in your project folder as MyExampleScriptableObjectClass.cs:

using UnityEngine;
using System.Collections.Generic;
public class MyExampleScriptableObjectClass : ScriptableObject {
	public string size;
	public float sizeWidth;
	public float sizeHeight;
    public List<MyExampleClass> list;

and this one elsewhere in your project folder as MyExampleClass.cs:

using UnityEngine;
using System.Collections.Generic;
public class MyExampleClass {
		//some example data
		public string name;
		public string size;
		public string offset;
		public float offsetX;
		public float offsetY;
		public bool isTrimmed;
		public MyExampleClass(string name, string size, string offset, float offsetX, float offsetY, bool isTrimmed) { = name;
			this.size = size;
			this.offset = offset;
			this.offsetX = offsetX;
			this.offsetY = offsetY;
			this.isTrimmed = isTrimmed;

now use the menu command (Custom|Create a MyExampleScriptableObjectClass ScriptableObject). Click on the prefab that got created, and observe that you can see (and edit) its saved data in the Inspector. Neat eh? Sorry if this doesn't have a nice article describing why it's useful, but I find myself short on words. Feel free to edit this article!

Personal tools