- Home /
How can I create, via script, a hidden subasset (ScriptableObject) that is editor-only and invisible in Project view?
I am creating an asset (ScriptableObject) that is accesible to the user at runtime, with AssetDatabase.CreateAsset. Inside this asset, I am creating a metadata sub-asset with AssetDatabase.AddObjectToAsset. I need this object to be editor-only (not included in builds, and unavailable at runtime).
I know that if the user doesn't reference this asset, it won't be included in builds.
So I want to hide this subasset from Project view, so that it isn't displayed to the user in the editor.
Problem #1: Setting
hideFlags via script doesn't seem to work with
AddObjectToAsset, the sub-asset is created with
m_ObjectHideFlags = 0 anyways.
If I somehow manage to set it (by manually opening the .asset file and setting that field to
HideFlags.HideInHierarchy, which is value 1), then the subasset is correctly hidden in Project view. But I need a way to set this flag via script.
Edit: The serializer works, it was my mistake.
Problem #2: When the sub-asset is hidden, using AssetDatabase.LoadAssetAtPath<MySubAssetType>(mainAssetPath) returns null.
Workaround for #2: While I was typing, I found out that this code works:AssetDatabase.LoadAllAssetsAtPath(mainAssetPath).OfType<MySubAssetType>().FirstOrDefault()
I'm leaving the solution here in case anyone needs this.
Answer by alfish · May 03, 2018 at 12:10 AM
Nevermind, I figured out I had used & operator instead of | to combine the flags. A dumb mistake of mine. ¬_¬
Your answer