- Home /
Custom Asset Files
I've seen that the Terrain System was able to create its own Terrain Asset, it even has its own Icon, this asset can then be selected from an ObjectField in the inspector, and loaded. Any idea how this is done, and how I might replicate it?
I've been looking around the forums, and answers board for a while.. but I can't find any leads.
Hope someone can help, and thanks a lot if you do!
Answer by jashan · Aug 05, 2010 at 12:28 PM
I think what you're looking for is ScriptableObject. When you implement ScriptableObject you can create instances of those objects via editor scripts and use those objects e.g. for storing data.
I'm using this, for example, to store meta information about my levels persistently as objects in the project. Here's a script snippet I used to create those assets ("LevelData" is a ScriptableObject).
[MenuItem("LevelEditor/Create Level Data")]
public static void CreateLevelData() {
LevelData asset = new LevelData(); //scriptable object
AssetUtility.CreateAsset(asset, "LevelData New");
AssetUtility.SaveAsset(asset);
EditorUtility.FocusProjectWindow();
Selection.activeObject = asset;
}
What is AssetUtility? I've searched all over for it and I can't seem to find it anywhere. AssetDatabase seems to have the same functions, but it won't let you create an asset that isn't native to Unity. I'm trying to do the same thing here, except I'm trying to load a custom file type (.custom for example)
That does not work anymore, anyone can give feedback on how to do this in Unity 3.5?
http://unity3d.com/support/documentation/ScriptReference/AssetDatabase.CreateAsset.html says you need to use the appropriate extension
'.asset' is the extension for arbitrary serialized objects.
Answer by maccesch · Aug 13, 2014 at 09:30 PM
Please have a look at this blog post: http://80hdgames.com/chris/?p=100
They're using this script: http://www.jacobpennock.com/Blog/?page_id=715