Post One - Topic Sprite Editor Tools and API.
Going to start my long list of issues with Unity 2D tools. Trying to split these into smaller posts to help them be easier to go through. Starting off with the Sprite Editor.
Sprite Window Editor Functionality
Not being able to select multiple sprites at once and edit them. This is the biggest issue for a lot of people using Unity Sprite Editor. We want to be able to select multiple sprites and change their values at once. Imagine you have thousands of Sprites like our project, going through and renaming each frame in a sprite sheet can be painful. It literally can take hours from scratch to name frames of character sheets to set up for animations. We also need some stuff tweaked for pivot point on certain sets of frames for things like crouching, crawling and so forth if we want to keep certain sized cells consist in the project.
Multi Sprite Renaming
I would like to see this functionality added and this is a simple change to be able to have the ability to select multiple sprites in the Sprite Editor and change their values. For renaming a set of sprites you can use the already in Editor option located in the Project Settings called Game Object Naming to let people choose how they are named. Example Player Bow 0, Player Bow 1, and so forth. Just please add a new option for the Game Object Naming that follows this convention Name 0. There is no option for name of the object with a space than adding just a digit.
This one change would speed up devs lives a lot and make it a lot simpler. It would also need the proper API calls to do it via custom editor as well if people are using Unity’s SpriteEditorModuleBase abstract class to add new Sprite Editor Modules.
Sprite Frame Module.cs API Usability
The next biggest issue with the Sprite Editor is honestly the use of internal marked API. A lot of the API is marked internal requiring reflecting to use or to copy it out and make your own files. The problem is there is so many interlocked files relying on each other it takes forever to do it.
I have gotten the multi selection Sprite working inside of Unity’s built in Sprite Editor implemented with proper renaming, but it was a huge headache from having to get the original sprite editors features working with just adding a couple extra features on top of it. It is a lot faster to make your own sprite editor from scratch even with there being half the API already made for you, because you can’t easily call most of the API. Some of the API should be safe to let user’s access.
Internally Marked Sprite Frame Module Classes and Enums
Example why is the SpriteRectModel class marked internal. Surely it would be nice to be able to use in custom editors. Some basic enums, that doesn’t make any sense for them to be internal, such as AutoSlicingMethod and PivotUnitMode should be pulled out of the classes and marked public.
Internal Helper Methods
There are a lot of helper classes that might not be able to be pulled out, but being able to call them would be nice like the DoAutomaticSlicing, GetGridRects, and DoGridSlicing methods located inside of the Sprite Frame Module. I mean just make some of the Sprite Frame Module.cs related classes not marked internal and that honestly solves a lot of the pain points of those wanting to work with the Sprite Editor. At that point people can easily implement their own stuff.
At the moment though if something doesn’t exist people have to make it from scratch when it doesn’t have to be. Most of the API is there, but we can’t take advantage of it. If we can access and use the API than we could implement on our stuff while waiting for the features to come to the editor by default more easily.
For anyone wondering how big of an issue this API is by being marked internal just go look at the SpriteFrameModule.cs, SpriteFrameModuleBase.cs, and the ISpriteEditorModule.cs files and try to add some new stuff to the SpriteFrameModule system in a simple form.
With Unity 6 release cycle being worked on I think this would be a nice time to set up for the future of the API with some changes to the underlining tools.
Thank you to all the Unity developers, staff members, and other community members that took their time to read this. I would like to hear other thoughts on this part related to Sprite Editor usage in code and in the editor itself. Have a great day.
Post two will involve the tile map side of Unity editor tools.