Skip to content

platinio/Unity-ScriptableObjectDatabase

Repository files navigation

ScriptableObjectDatabase

Scriptable Object Database is the best way to organize and manage your scriptable objects in Unity, forget about trying to organize your scriptable objects by hand with complicated folder structures, with this tool you can create as many scriptable objects as you need contained in a single object, a nice and easy to extend editor window to edit/create your scriptable objects and a custom dropdown to select those objects when you want to reference it from your scripts.

How to Install?

Install from the Unity Asset Store.

Or

Import This Unity package into your project.

Getting Started

If you prefer here is a youtube video.

Best way to manage Scriptable Objects in Unity (Free Asset!)

Longer text version here.

Creating a Database

using ArcaneOnyx.ScriptableObjectDatabase;
using UnityEngine;

namespace ArcaneOnyx.InventorySample
{
    public class ItemDefinition : ScriptableItem
    {
        [SerializeField, TextArea] private string description;       
        [SerializeField] private int stackableAmount;

        public int StackableAmount => stackableAmount;
        public string Description => description;
    }
}
using ArcaneOnyx.ScriptableObjectDatabase;
using UnityEngine;

namespace ArcaneOnyx.InventorySample
{
    [CreateAssetMenu(menuName = "Sample/Database/Item Database")]
    public class ItemDefinitionDatabase : ScriptableDatabase<ItemDefinition>
    {
   
    }
}

Create Custom Editors

using ArcaneOnyx.ScriptableObjectDatabase;
using UnityEditor;

namespace ArcaneOnyx.InventorySample
{
    [CustomEditor(typeof(ItemDefinitionDatabase))]
    public class ItemDefinitionDatabaseEditor : 
        ScriptableItemDefaultEditor<ItemDefinitionDatabaseEditorWindow, 
            ItemDefinitionDatabase, ItemDefinition>
    {
        
    }
}
using ArcaneOnyx.ScriptableObjectDatabase;
using UnityEditor;

namespace ArcaneOnyx.InventorySample
{
    [CustomEditor(typeof(ItemDefinition))]
    public class ItemDefinitionEditor : ScriptableItemEditor<ItemDefinitionDatabaseEditorWindow,
        ItemDefinitionDatabase, ItemDefinition>
    {
        
    }
}

Create Custom Editor Window

alt text

using ArcaneOnyx.ScriptableObjectDatabase;
using UnityEditor;
using UnityEngine;

namespace ArcaneOnyx.InventorySample
{
    public class ItemDefinitionDatabaseEditorWindow : 
        DatabaseEditorWindow<ItemDefinitionDatabase, ItemDefinition>
    {
        [MenuItem("Window/Sample/Items Editor")]
        public static void OpenEditor()
        {
            ItemDefinitionDatabaseEditorWindow wnd = GetWindow<ItemDefinitionDatabaseEditorWindow>();
            wnd.titleContent = new GUIContent(wnd.GetWindowTitle());
        }
        
        public override string GetWindowTitle() => "Item Definition Editor";
    }
}

Database Dropdown

alt text

using ArcaneOnyx.InventorySample;
using ArcaneOnyx.ScriptableObjectDatabase;
using UnityEngine;

public class DropdownTest : MonoBehaviour
{
    [SerializeField]
    [ScriptableItemDatabaseSelector(typeof(ItemDefinitionDatabase))]
    private ItemDefinition item;
}

Dependencies

Scriptable Object Database depends on Unity-AdvanceDropdown, so if you want to clone this, you will need to clone both repositories.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

No packages published