Local Time Scale
v1.0
The LocalTimeScale
class is the thing that helps objects determine their final TimeScale
value. There are three main ways you'll utilize Local Time Scale objects.
Create a Local Time Scale Scriptable Object
Right click in your project and select Create/Magic Time/Time Scale
to create a new Scriptable Object.
Often the pre-created objects will populate the Magic Time Manager and Magic Time User lists of "Initial Time Scales".
With this pattern, all objects will be accessing the same runtime instance of these LocalTimeScale
objects. Use this for "Global" scales, as well as time scales that are meant to effect specific types of objects, such as "Enemies" or "Projectiles".
Magic Time User and IUseMagicTime
The interface IUseMagicTime
is implemented by MagicTimeUser
. Each Magic Time User object will automatically create its own LocalTimeScale
, which you can think of as that objects internal clock.
Any object that will be changing its time scale using Magic Time should implement IUseMagicTime
. Inheriting from MagicTimeUser
is likely the best option most of the time.
Create at Runtime
LocalTimeScale
objects can be created at runtime as well. Classes like the TimeZone
demonstrate how this can be done.
Simialr to the Time Zone objects, creating your own LocalTimeScale
enables more options and flexibility to help create the in-game experience you're looking for.
Events
Each LocalTimeScale
includes UnityEvents
and other events you can subscribe to.
Subscribing to Unity Events at Runtime
Since these objects are Scriptable Objects, in most cases you'll need to subscribe to the UnityEvents
at runtime. Your object should reference the LocalTimeScale and add itself as a listener.
Subscribing to the Events at Runtime
The Events
also include the LocalTimeScale
object, which is useful if you have one object that is subscribed to multiple LocalTimeScale
objects, and needs to know which one called the event.
Additional Scripting
Be sure to check out the Local Time Scale Scripting page with examples on how to use this class.
Local Time Scale ScriptingLast updated