Awesome. Really great tips for beginners like me to start working correctly.
Very interesting article, thanks for sharing!
astounding work there - hope someone important notices! I'm just jrpg fan. . . somebody needs to hire you!
Game developer and Unity 5 master Johnathan Rossitter talked about his most recent product for Unity Asset Store – Zone Controller. It’s an awesome tool that will help you to control your scenes much easier.
Zone Controller Introduction
Zone Controller is a collection of Unity scripts which allows game developers to control the dynamics of their scenes like never before.
The main concept is based on creation regions of your scene (Zones) which contain configuration information about how all of the other effects in the Scene should behave when the player is in that Zone. Zone Controller makes the entire process of creating these Zones extremely easy and does not require the user to write a single line of code.
- Create a new Zone in your scene and define it’s shape.
- Drag the GameObjects which you want to control onto that Zone’s inspector.
- Browse all of the sub components that Zone Controller discovers within your GameObject and select the Fields/Properties/Methods you wish to use.
- Specify the values you want each of those properties to use when that Zone is triggered inside the Zone’s inspector.
- Click Play.
At runtime there is a Master Zone Controller in the scene which monitors all of the individual Zones you setup and when a Zone is triggered by a player entering it, the Master Controller will smoothly and gradually transition the values from the current state into the values you specified in the inspector.
Changing the Properties of the Object
I worked hard on getting this right from the beginning and had 4 semi public beta releases of the product before releasing it. Zone Controller has 3 main methods of discovering information about the GameObject/Components you choose.
- Using .NET Reflection and Generics, whereby Zone Controller will look at the fields, properties, enumerators, methods and complex subclasses within your component.
- Core Unity Types, where I have specified known and stable properties of things like Lights, Cameras, Shaders, Materials, Particle Systems and many others.
- Certified Plugins, where other asset developers have worked with the publishers API I made available and only published the properties they wish to expose to Zone Controller.
Zone Controller will work with fields,properties and methods that are:
Public, Private, Static or Instance
Zone Controller presently supports the following types:
Int, Float, Bool, Color, Vector2, Vector3, Vector4, AudioClip, String, Enumerations, Texture and Texture2D
So for example, if you are using a Post Processing image effect like a Color Correction script, Zone Controller can allow you to change the properties of that component at runtime and give you different color grading settings for indoor or outdoor regions of your Scene.
Zone Controller is intended to be use as many times per scene as you like. Presently only 1 active Zone at a time is supported, so you can have as many of them as you like. I have an update in the works to support nested Zones, where the Master Controller will average settings of multiple layers of Zones within other Zones. I did extensive testing with Zone Controller in my development and found virtually not impact on the runtime, as you only modify the items you select. The Editor itself has a small bit of overhead when discovering new components as it has to do deep introspection on Game Objects you select.
Obviously as an asset developer I would like to make enough money to fund my research time, so it’s advantageous of me to make the Pro version more compelling than the Free. That being said the Free version is not crippled in any way. It offers all of the core functionality of the Pro version but with limitations. Mainly the Free version is limited in:
- Only 5 properties can be selected per Zone (though you can have as many zones as you like)
- Advanced transition tools like Curve based transitions are disabled
- No source code
- No access to beta versions
- No reflection based component discovery
Without overestimating the usefulness of Zone Controller, I can say that since Zone Controller can allow you to control ANY other Unity component, the uses are limitless. There are applications for Zone Controller in almost any game and scenario. However most of my users have found the most benefit from Zone Controller in:
- Controlling weather and environmental system like Tenkoku, Time of Day and Sky Master
- Controlling AI engines and making enemy NPC characters more aggressive when you are certain Zones.
- Controlling game time speed to create Slow Motion Zones
- Controlling Gravity settings and making Low Gravity portions of a Map
- Controlling Special effects like Amplify Color, ColorfulFX,
- Controlling Curvature systems like Curved World and Horizon Bend
- Controlling Particle Systems like shuriken
- Controlling Unity Animation Controllers to animate certain parts of your level when a users enters a Zone
- Controlling the tightness and speed of Character Controller Systems like Motion Controller 2 by ootii
In addition to controlling properties of components, Zone Controller also allows you to fire off events to scripts when you trigger zones, so Zone Controller has been used to track game events such as cut scenes when a user reaches a certain part of the map.
So yeah, the uses for Zone Controller are really only limited to the imagination of the game developer. And again, this is all done without writing a single line of code.