Custom Inspector Controller
Technical Artist Portfolio
Sword summon attack effect
This portfolio demonstrates particle effects created in Unity and controlled using custom Unity editor inspector controls.
The brief for this work includes constraints for the amount of control artists and designers could have over the effects. For example while colour controls are required to change the base colour of the effect, limits should be placed on the level the opacity, (alpha channel) can be set to.
This will prevent effects from becoming entirely transparent or so high in opacity that they obscure the characters in the scene.
Certain elements of the effects should have a fixed colour and remain unaffected by any change to the base colour of the effect, (in order to add contrast and make the effects pop).
Create a system to allow artists to integrate artwork, (2D sprites) into a particle effect system for making magic effects
Allow for designers to control effects using a set of custom editor controls
Set restrictions of certain controls such as opacity and attack range
Control over effect lighting colour, range and intensity
Include controls for switching key inputs that will trigger each effect
Ensure effects can target specific characters, (player or enemies)
Allow for audio to be toggled on and off
Include the ability to change the effect prefab to instantiate
Each effect must be able to be triggered using an inspector button for testing in play mode while in the editor
Applying effects to player and enemies in range
These effects make full use of Unity’s built in particle system to make the magic look as realistic and exciting as possible, while still maintaining a stylised aesthetic.
The example effects used in this demonstration can all be easily edited to use different custom sprites, sound effects and lighting.
Magic Effect Controller script
These effects have been created using a mixture of custom sprites, (made in Affinity Designer) and the default particles in Unity.
Changes are applied using constant values, random values between two constants and custom curves.
In addition, Perlin noise is added to some of the effects to accentuate movement, rotation and scale.
Custom inspector tools in action using the Ring effect
Changes to these effects are made using a set of custom controls available in the inspector, in the Unity editor.
These controls have been specifically designed with custom sliders for float values, that have been locked to a range to fit the brief.
This makes it easy for artists or designers to make quick changes to the effects and immediately see the results in the editor during play mode, without accidentally breaking the effects.
Custom inspector tools in action for grouped effects
The main effect controls include:
Slot for each effect prefab to instantiate
Slot for changing sprite used in particle system
Dropdown menu for choosing effect activation key
Colour selector for changing the base effect colour
Slider for setting the alpha percentage of the effect, (min 10% - max 70% to avoid obscuring characters in the scene)
Toggle button for controlling audio effects on / off
Button to play the effect in play mode, within the Unity editor
Custom Editor script & enemies range finding script
Additional controls include:
Slider for player attack range, (attached to the player character). This controls the range the player can attack within by adding enemies to a public list when they enter the player’s attack range and removing them from that list when they leave
Button to reset effect to a set of default settings
Enemies range finding in action using Execute Always attribute to update the range sphere collider live while not in "Play Mode"
Reflections & Future Development
This brief contained specific requirements that have all been met. I worked on two version of the effect controllers, (one for individual effects and another for group effects). This meant that I had to transfer code between these scripts as the controls changed and new functions were added. In the future I will work on one version of the controller script until all the requirements have been met before expanding the functionality to a group effect controller. This will minimize repeating code and reduce time ensuring functionality is matched in both version.
In the future I would like to add further controls to allow artists to extend the functionality of the controls and customise them through the Unity editor without having to ask for changes in the code base. It may also be useful to implement a series of checks on the type and resolution scale of sprites added to effects, so that effects can remain consistent.
Further development would also include added reactions for each effect. This includes making each effect impact either the player character or the enemies in the scene. This could be applying damage or healing to characters, as well as applying status effects such as poison or bleed damage.
Overall this project stretched my imagination and forced me to think outside the box when designing solutions to the problems that occurred during development. Making sure that effects were instantiated in the correct position and were set to follow the correct character was a challenge. Good use of tags in Unity helped to allow for identification of enemies in the scene, and also those that were in range of the player. Control over the individual modules of each particle system was also challenging. Good use of references, tags and for loops allowed for quick checks to be made and effects to be updated in the editor.