paint-brush
10 Useful Assets and Third-party Kits for Unity Developers of Any Levelby@jokeresdeu
722 reads
722 reads

10 Useful Assets and Third-party Kits for Unity Developers of Any Level

by Les DibrivniyJuly 26th, 2023
Read on Terminal Reader
Read this story w/o Javascript
tldt arrow

Too Long; Didn't Read

10 useful assets and third-party kits for Unity developers of any level that help developers to simplify the work process
featured image - 10 Useful Assets and Third-party Kits for Unity Developers of Any Level
Les Dibrivniy HackerNoon profile picture

A few years ago, I participated as a mentor in a game jam. After the announcement of the winners, one of my mentees asked me:


"The winners created their game by assembling assets from the Asset Store. They didn't even write three lines of code. Is that fair?"


At that moment, I became convinced that the Unity Asset Store and third-party SDKs (Software Development Kit) are the best things the internet gods have sent us. Imagine a ready-to-use, tested solution that can save your project time and money. What could be better? Only a list of ten solutions that developers will surely be thrilled about.


The order in the list is arbitrary. You won't find in-app purchases or advertisement SDKs here because they deserve a separate article. The same situation is with content assets because their necessity depends on specific projects.


Mesh Baker

This tool is essential for optimizing a 3D project. It becomes even more necessary when you don't have an experienced full-time 3D artist ready to lend a hand at any moment. Working with stock or freelance models often involves excessive materials and sub-meshes. When you insert such a model into your project, the number of draw calls overgrows. Mesh Baker takes care of the optimization process entirely.


Unlike other similar programs, Mesh Baker can do everything. Here are some of its capabilities:


  • Creating texture atlases or arrays for prop sets
  • Finding, grouping, and combining meshes in large and complex scenes
  • Modifying model prefabs for atlas materials usage
  • Supporting models with multiple materials
  • Processing tiled textures
  • Combining, customizing, and adding objects to skinned meshes
  • Combining dynamic meshes into a single-skinned mesh


This asset also has well-documented instructions, regularly updated video tutorials, and good developer support.


Amplify Shader Editor

If we put it briefly, Amplify Shader Editor is the Shader Graph of a health-conscious person. Here are its advantages over other shader editors in Asset Store:



Spine

Do you continue to use frame-by-frame animation in your project? If you're tired of constantly changing Unity's toolkit for working with skeletal animation, Spine is specifically designed for you. It's not an asset from the Unity Asset Store. Still, it is the best solution for working with 2D character animation in Unity.


Spine operates based on skeletal animation principles: the character is divided into parts, and the animation is created by changing the state of those individual parts. As a result, a set of 10-20 character animations can fit into a 1024x1024 pixel atlas, along with a .txt file containing the atlas layout and a JSON file with the saved animations. The animations for such a character will take up a maximum of 2MB. Now, how much space would files for 20 frames of frame-by-frame animation take?


Of course, you can use one of the 10 Unity solutions for skeletal animation or find something on the Asset Store, but Spine has several advantages over them:


  1. Spine works with any 2D game engine and is suitable for creating animation clips. Finding an animator who works with Spine is much easier than finding someone who can create high-quality 2D animations in Unity.
  2. Spine bypasses the work with Unity Animator. Honestly, I can't stand working with it. If you've ever tried to set up complex transitions between animation states in Unity, you'll understand me. Let's be silent about animation events and working with animation parameters via strings. Spine allows you to control animations through code.


Additionally, Spine has:


a. Custom serialization of animation clips and skins

b. Animation events at the end of playing an animation clip or animation

c. Easy integration of animation events within the animation itself

d. The ability to attach sprites to your animation skeleton that participate in the animation — creating an equipment system with Spine is a breeze

e. One file for game and UI animations

f. Well-documented instructions and an active community


Overall, you won't want to work with other 2D animators once you try Spine.


Cinemachine

If your project requires something more than a single-plane static camera, use Cinemachine. When I last created a custom controller for a 2D camera, it took me several days. What I ended up with was less flexible than Cinemachine. Installing Cinemachine is the first thing I do when I need a camera controller. Here are its advantages:


  • Support for 2D functionality
  • Dozens of different camera controller settings
  • Blending between different cameras using easy functions
  • Camera shake system
  • Ability to add up to 8 virtual cameras
  • Obstacle avoidance system with colliders
  • Split-screen and picture-in-picture modes
  • Automatic zoom
  • Post-processing effects

Firebase

Here I cheated a bit by grouping together a whole set of products from one developer.

Firebase is irreplaceable, and the entire product group is much easier to work with than individual assets. It can offer the following:


  • Project analytics: How do users respond to your project's features? Add the Firebase Analytics SDK, track events from the desired code locations, and monitor them in the web console. This way, you can see where users drop off in your app or how much time they spend on each game level.
  • Remote configs: They allow you to change the appearance of your app without releasing an update.
  • A/B testing: In short, it's a tool for testing the impact of functionality on key metrics of your app. For example, if you want to change the main menu design but are concerned that it might deter users, A/B testing can help. You allocate a group of users, let's say 20% of all users, and show half of them the old menu and the other half the new one. Then, you observe which group shows better metrics in terms of purchases, time spent in the app, etc., and conclude the need for a redesign.
  • Authentication: Firebase can handle authentication for various types, including email and password, Facebook, Google, Apple Account, and even GitHub. If a user still needs to authenticate, Firebase creates a ghost account for them, and you can utilize the data from that account after authentication.
  • Real-time database: A database based on a JSON file that allows you to read updates in real-time with minimal delay.


And this is probably just a small part of what Firebase is capable of.


DOTween

DOTween is the best solution for creating animation sequences in Unity. It allows you to develop component-based animations from code, combine them into sequences, receive callbacks when they end, and launch them in asynchronous methods. DOTween also supports the use of easing functions, unlike similar assets.


DOTween creates animations based on Unity components. For Rigidbody, for example, you can control position, rotation, and velocity. This means that DOTween can even be used to create movement controllers for 2D and 3D. Additionally, DOTween works great with UI animations.


I'm providing a link only to the free version, as I have never encountered a moment when this functionality was insufficient throughout my career. Of course, you can tween TMPro in the pro version, but it's easy to work without it.


Dependency Hunter/Finder.

This asset's paid, and free versions are essential for organizing a project. You have encountered files lying in your project since its creation multiple times for 100%. They seem to be unused, but deleting them is still scary. These two assets will show you a complete list of dependencies between files, even if they are embedded in the addressable system.


The process of finding dependencies with an asset


Odin Serializer

Experience the power of Scandinavian gods working with the Unity inspector:


  • Static Inspector allows you to select any type and view all its static members. Properties, fields, and even methods are displayed with all their arguments. You can filter the output by type or member name.
  • Enumeration will have a proper appearance in the inspector, plus you'll be able to assign its value through search.
  • Odin Editor Window is an extension of Unity Editor Window functionality that allows you to forget about writing GUI code. Many attributes for working with GUI elements will satisfy all your desires. You can override the GetTarget method and pass an instance of any type for display. It doesn't have to be serialized or even a Unity object. This allows you to serialize interfaces, abstract classes, and even collections of such objects.
  • 100+ attributes that allow you to customize the inspector's behavior. You don't need to inherit from anything — mark the object with the necessary attribute, and you're done. The complete list is available at the following link.


I have selected a few of the most superficial attributes and described their capabilities:


a. [ChildGameObjectsOnly] — can be used on fields and properties of type Component. The compiler will iterate through child objects and return objects of the corresponding type in a dropdown.

b. [SceneObjectsOnly] — works similarly to the previous attribute, but the search is performed throughout the scene.

c. [AssetsOnly] — can only be used on fields and properties of type Unity.Object. This attribute allows serialization only for objects not present in the scene.

d. [Required] — can be used on a field or property of type Unity.Object. It will display an error icon and a message in the inspector if the object is empty.

e. [ValidateInput("ValidationMethod")] — a dropdown based on the provided IEnumerable with your specified values.


The cherry on top can be another asset that pairs well with the serializer: Odin Validator. It will save you from broken objects, missing references, and similar issues. Combining all these features makes working with it extremely comfortable compared to similar assets.


Procedural UI Image + UI Gradient

Let's start with its functionality. Procedural UI Image is an alternative to Unity Image. It can do everything the original can and even more:


  • Adjust the border radius and width of the image
  • High-quality edge smoothing without impacting performance or causing jagged edges
  • Support for border blurring, which can be used for soft shadow or glow effects


UI Gradient is an extension of the previous asset:


  • Gradients are procedural and can be animated

  • Support for linear and quadrilateral gradients

  • Gradients can be rotated at any angle

  • High performance


After familiarizing yourself with the functionality of this pair, you immediately realize the space saved. You can say "goodbye" to hundreds of sprites with different radii or gradients that only UI designers can distinguish.


As a bonus, a similar solution is the Modern Procedural UI Kit. This asset offers more functionality but may have lower performance than the previous ones.


SR-debugger

If the use of previous assets can still be questioned, this particular asset, or its equivalent, must be in every project. It's pretty simple — a debug window for on-device builds.


If you are developing for platforms like Standalone, iOS, Android, Windows Store, WebGL, or Web Player and you're not using something similar, I feel sorry for you. And I firmly recommend installing this asset quickly.

This asset should be the first thing you add to your project after its creation. So, what can it do?


  • Display Unity logs in a custom UI on the device with filtering, clearing, and copying capabilities.
  • Built-in Bug Reporter that allows you to send logs via email.
  • Built-in profiler for monitoring device resources.
  • Open-source code that allows you to embed your dev tools into the debugger panel.

These are the assets that I use most often, but there are many more of them. Nowadays, before starting a task, I increasingly check if there is a ready-made solution in the Asset Store. If I need water effect, I go to the Asset Store, realistic ropes — Asset Store, 2D pathfinding — Asset Store.


The answer to "Why do companies need you if there are so many ready-made solutions?" is quite simple. A good specialist is not only someone who can do everything from scratch but also someone who can provide the most beneficial business solution in the shortest possible time. So make full use of the asset store! It will help optimize your work and allow you to spend more time on complex tasks.