Useful Assets
- SALSA: LipSync Emoter and EyeMovement
- Scriptable Objects Architecture
- UMotion Animation Creator
- Odin Inspector
- PlayMode Saver
- Double-Sided Shaders
- Inverse Kinematics && FinalIK
- Tweening
Some good Asset Store assets are mentioned below, in no particular order.
SALSA: LipSync Emoter and EyeMovement
If you’re using characters in your project that should be able to display emotions, eye movement and be able to speak, you might want to use SALSA. This asset is fantastic, and allows your characters to come alive. A basic setup is easily done, however, a detailed and precise setup requires a fair amount of (trial and error) work. A good tutorial can be found here.
Scriptable Objects Architecture
The free Scriptable Object architecture asset is a solid implementation of the innovative work displayed in Ryan Hipple’s 2017 Unity talk. It contains (at least) two distinct features:
- Scriptable Object Events
As described here, using Prefabs in your Project is a great way to separate your various gameobjects. However, one big challenge is on being able to communicate with the Instantiated prefab, since Prefabs in the Project view can only contain references to itself, but (initially) not to code and components in the Hierarchy. The SO Events solve this by creating references to Event Files that live in the Project view. Those files can be accessed from anywhere, including your Prefabs. Then, those SO Events communicate with more local UnityEvents, which are referencing components within the same Prefab. - Scriptable Object Variables
A distinct but related feature of the SO Architecture asset it the way it solves dealing with multiple references to the same variable. Imagine for instance you have a variable representing the number of seconds a character should maintain eye contact (e.g. public float eyeContactAmount). You may need to have a reference to this variable in multiple places. However, where does this original variable live? And how should other pieces of code link to it?
One solution is to have each variable as a Scriptable Object Variable. Again, just like in the SO Events, these are files that live in the Project view. Then, you can create a reference in your code to this file.
UMotion Animation Creator
Creating and editing animations in the standard Unity Animation window is… fine. However, if you want to do it right, and save yourself a lot of headache, UMotion is here to help. A near-professional-grade animation editor, which is still easily learned.
As an added benefit, this asset is relatively self-contained, and is no longer needed once you’ve created (and exported!) your animations. This asset therefore doesn’t hamper you sharing your project.
While we’re here: you might find great value in The Animator’s Survival Kit
Odin Inspector
One asset which can greatly improve the readability of your Inspectors is Odin. Both a blessing and a curse (see the section above on Sharing && Licensing), this asset makes it easy to create custom inspectors for your scripts.
For instance, if you want to make it more robust and easier for another developer on your team to see what they should and should not include in the Inspector of a script, Odin can help you out greatly. It also allows you to nest Inspectors of one Class within another. Finally, adding a [Button] attribute to any method in your script makes them easily available for testing in the Inspector.
Be extra mindful with this asset in terms of sharing your project. The use of this asset quickly permeates your entire code-base, and stripping it can be a minor nightmare.
PlayMode Saver
Simple yet effective, PlayMode Saver allows you to save changes you’ve made to gameobject components while in Play mode. Why this isn’t Unity’s default behavior is beyond me…
Double-Sided Shaders
Normally, Shaders will only render Materials on one side, to save resources. However, sometimes you need your Materials to be visible from both sides. Try this shader for the standard render pipeline, or this shader for the URP
Inverse Kinematics && FinalIK
Inverse Kinematics (IK) is a brilliant technology. You can use this any time you want to move something that has multiple dependent parts, such as an arm.
In ‘standard’ Forward Kinematics, if you for example want to move a character’s hand, you would always first move/rotate the shoulder and then the elbow. This is often cumbersome. In IK you would simply move the hand, and the rotation of both shoulder and elbow is then calculated using restrictions and probabilities. This makes for much easier calculations.
IK allows you to override existing animations, to make them better suited to your needs.
FinalIK is a fantastic asset, but not always easy to fully master. A tutorial might help you along the way.
Unity has recently created their own IK solution, which can be found here
Tweening
‘Tweening’ is an alternative to Animating something manually. It can be quite useful when animating UI, but is not always suited for character animations.
You can write your own tweening library, since the concept is based on coroutines. However: tweening libraries are abundant, see for example DOTween and iTween.