[RELEASED] Scriptable Sheets

Overview

View your Unity assets in a whole new way. Scriptable Sheets revolutionizes Unity by integrating spreadsheet-like views for all your assets, boosting productivity and simplifying data management.

Unity Asset Store | Documentation | Video Tutorials | FAQ

Questions? Email us at support@lunawolfstudios.com

Inspect your assets in a table list asset explorer, where you can easily manage everything in one window. View and edit your ScriptableObjects, Prefabs, Components, and more. No need for endless searching through folders and Objects.

Core Features

  • Seamless Integration: Instantly explore all your new and existing assets, including ScriptableObjects, in a spreadsheet-like view—no coding required.
  • Asset Management: Select, read, update, and delete Unity Objects within Scriptable Sheets table list view.
  • Batch Create: Quickly create multiple instances of any ScriptableObject type with a single click.
  • Import/Export: Easily import CSV, TSV, and other flat file formats. Export to your preferred format, including Json, with options for headers, wrap settings, custom delimiters, and string-to-enum conversions.
  • Copy/Paste: Copy entire tables, single columns, rows, or cells into any flat file format. Paste data seamlessly back into Scriptable Sheets, simplifying complex data transfers across serialized fields.
  • Serialization: Visualize serializable classes, complex data, and serialized property types within a multi-column view.
  • Complex Data: Handles complex Objects with inherited, nested, and generic fields.
  • Managed References: Edit serialize reference fields with a per-row type dropdown and a column for every concrete subtype’s fields.
  • Object References: Supports Unity Object types such as AudioClips, Materials, Prefabs, ScriptableObjects, and more!
  • Collections: Basic support for serializable arrays and lists (not recommended for very large or deeply nested collections).
  • Read-only fields: View Asset Paths, GUIDs, and read-only fields for any Unity Object.
  • Sub Assets: Manage and filter Sub Assets for ScriptableObject types.
  • Addressable Assets: Compatible with Addressable Asset References and their Sub Assets.
  • Prefab Components: Filter, view, and edit Components attached to your Prefabs, including Transforms, Colliders, Rigidbodies, and more.

User Interface

  • Keyboard Navigation: Familiar spreadsheet-like navigation using tab, enter, shift, and arrow keys.
  • Search Filtering: Search and filter Objects by directory, name, and even advanced property-based filters. Includes advanced name search settings for case sensitivity and prefixes.
  • Pagination: Navigate large amounts of Objects with intuitive controls for changing between pages.
  • Hide/Show Columns: Hide or show specific columns to focus on the data that matters most to you.
  • Resizable Columns: Adjust column widths to fit your data for a customized view. Includes preset buttons for stretching, compacting, and expanding columns.
  • Adjustable Row Height: Change the row height to fit your content, including multiline text and asset previews like textures, materials, and models.
  • Sorting: Sort Unity Objects by any column and property type in the table view, even colors, gradients, animation curves, and read-only fields.
  • Multiple Windows: Open multiple Scriptable Sheet windows simultaneously, enabling efficient context switching between Unity Object types.
  • Recent Pins: Recently viewed Unity Object types can be auto pinned for quick access.
  • Session Cache: Attempts to persist pinned Object types after code compilation or restarting Unity.
  • Lightweight Text Editor: Includes ‘Paste Pad’, a lightweight text editor for a quick text editing within Unity.
  • Inspector Compatibility: Automatically selects Objects in Unity’s Inspector and Project windows as you navigate across table cells.
  • Theme Compatibility: Compatible with both Unity light and dark themes.

Why Scriptable Sheets?

  • Boost Productivity: Streamline your workflow with a familiar spreadsheet-like interface tailored for Unity.
  • Powerful Data Editor: Easily manage, edit, and transfer large amounts of data both in and out of Unity.
  • Advanced Customization: Tailor Scriptable Sheets to your specific needs with an extensive list of settings and options to choose from.
  • No Coding Required: Start using Scriptable Sheets right away without any coding and minimal setup. Scriptable Sheets automatically categorizes and organizes all your Unity Asset Types and serializable ScriptableObject types. To fully leverage all features of Scriptable Sheets, you will want to use Unity’s ScriptableObjects. To learn more about ScriptableObjects in Unity, you can visit the official Unity documentation.

Elevate your Unity development experience with Scriptable Sheets. Say goodbye to tedious data management and hello to a new level of efficiency and organization.

Technical details

  • Full Source Code: Power-users can customize Scriptable Sheets to fit their specific needs.
  • Samples: Select from a variety of sample projects to see Scriptable Sheets in action and accelerate your learning curve with ScriptableObjects.
  • Unit Tests: Ensure reliability and robustness with a comprehensive suite of unit tests.
  • User Settings: Leverages the “UserSettings” folder for user-specific preferences.
  • Immediate Mode GUI: Uses Unity’s IMGUI system for specific features not yet available in UI Toolkit.
  • Editor Only: Functions only in the Editor and is completely stripped in builds, except for the provided Samples.
  • Unity LTS Support: Supports Unity LTS versions 2020.3 and up.

Get Scriptable Sheets today and transform the way you work with Unity assets!

Full documentation available here

scriptable-sheets-gif-01

scriptable-sheets-prefab-components-croppped

4 Likes

Version 1.2.1 has been released! It includes some highly requested features and fixes. Enjoy!

v1.2.1

Fixes

  • Fixed an issue where TextFields in custom editor windows were not stretching properly.

v1.2.0

Features

  • New settings to override column display count for arrays and collections.

  • New setting to override the starting index when creating new Objects.

  • New setting for index padding when creating new Objects.

  • New setting to prevent direct editing of Object names.

  • Session state cache now restores the last Window closed.

Fixes

  • Fixed issue with editing cells introduced in Unity 2022.3.44f1 and 6000.0.16f1.

  • Improved sorting for strings containing numbers.

Refactors

  • Moved row line height to a constant in the SheetLayout script.

Full changelog available here.

Hi, just purchased this asset.
I’m curious if there will be support a dictionary in the future?

I appreciate that, thank you for your support!

Scriptable Sheets serialization is based on Unity’s default serialization. So anything you can serialize by default in Unity’s Inspector can be serialized in Scriptable Sheets.

This means for Dictionaries you’ll need to use or create your own Serializable Dictionary. For instance you could use Serialized Dictionary Lite | Utilities Tools | Unity Asset Store by Rotary Heart, which is my personal favorite free Serializable Dictionary asset. Then in Scriptable Sheets you can view the Keys and Values:

Let me know if you have any other questions. Thanks again!

Edit: Recently I’ve been using Serialized Dictionary | Utilities Tools | Unity Asset Store which also works great with Scriptable Sheets!

Thank you!
I have Odin inspector and change my SO inherit from ScriptableObject to SerializedScriptableObject.
It shows dictionary in the inspector but didn’t shows in the scriptable sheets editor.
Does it needs some extra steps to make it work?

Great question! To my knowledge Odin has a custom serializer for serializing generic Dictionaries. For the serialization to work in Scriptable Sheets it needs to be compatible with Unity’s default serializer. This means you’ll need to change your Dictionary type itself to a new type like SerializableDictionary. This is not supported out of the box with Scriptable Sheets, but there are lots of free resources for creating a SerializableDictionary in Unity.

Thanks, I may check the free Serializable Dictionary asset you mentioned before first!

1 Like

Import/Export : Easily import CSV, TSV, and other flat file formats.
This Import Action could be runtime?

Scriptable Sheets only works within the Unity Editor. It will work in edit mode and play mode, but not in standalone builds.

1 Like

Are there any plans to support export/import functions with Google Spread Sheet?

Scriptable Sheets supports direct copy/paste from Google Sheets as well as many other flat file formats. You can also export your Google Sheet to a CSV file and then import it into Scriptable Sheets.

Here are some videos to help you get started:

I apologize for my lack of explanation. I was asking if there will be an automatic import/export functions in the future. Because it’s quite a hassle to copy/paste manually. I have been using the BGDatabase Asset for many years and would like to move to this more editor-friendly asset if it supports automatic import/export.

Thank you for clarifying!

Full integration of Google Sheets SDKs and rest APIs is not on the immediate roadmap. There are a lot of existing free tools for that such as Unity Google Drive.

So you could use another tool to generate or sync your Scriptable Objects. Then view your Scriptable Objects in a spreadsheet-like interface directly in editor with Scriptable Sheets.

It’s important to highlight that Scriptable Sheets is not a database itself, it’s a table list view Inspector for all your existing assets (Materials / Prefabs / Scriptable Objects / etc). How you generate or create those assets is entirely up to you.

Thank you for your kind reply! If I do a personal project, I will definitely buy this asset. thanks for making such a great asset.

1 Like

First off, this might be one of the best packages I’ve found for Unity, amazing work.

A few small things that could make it even better:

  1. An attribute like [Searchable] that we could use to tag fields in our scriptable objects so they are searchable by default (the p: syntax is cool for programmers but our artists probably won’t ever use it). This would helpful since a lot of our asset names are more generic but there is a friendly name field inside them

  2. An option in settings for “Contains” instead of “Starts With” (or the default perfect match) when searching/filtering in case you only know part of the name.

  3. Need a bigger column limit than 40 (which seems to be the max I can set in settings)

Thank you so much! I’m thrilled to hear you’re finding Scriptable Sheets helpful.

Your suggestions are great. A [Searchable] attribute to easily tag fields for searching could be an interesting addition, I’ll consider how this might be implemented.

Regarding partial matches, if you disable “Starts With” in the Search settings, it will allow partial matches specifically for searching by asset name. Expanding this to other properties is a good idea, and I’ll look into it.

For the column limit, you can adjust the “Max Visible Cells” setting to increase the limit beyond 40 columns (though keep in mind, it may impact performance).

Thank you again for the valuable feedback!

Ah I figured out the Max Visible Cells. UX on that was a bit confusing. No big deal though.

Probably the biggest blocker I’ve found for adopting this package is that it currently doesn’t support Addressable AssetReferences. We use these quite extensively, and the default unity inspector renders them just like a normal direct reference, but ScriptableSheets shows all the internal fields (not useful)

1 Like

Thanks for bringing that to my attention. You could try disabling read-only fields under settings, which might help with readability. I’ll look into improving support for Addressable AssetReferences.

1 Like

Hi there! Apologies if this is not the right place to ask this but, is there any way to “batch edit” with this? For example, I want to multi-select several rows, and change a value (like a dropdown) for all of them at once.

Also something else that I’m noticing as I’m starting to use this is that classes that inherit indirectly from ScriptableObjects seem to not show up?

I have a class that is:
public class BaseClass : ScriptableObject, IInterface { … }

And then I have another class that is:
public class ChildClass : BaseClass { … }

And it seems that neither BaseClass nor ChildClass show up in the Scriptable Sheets window for me. Is it because of the interface?