IActionUpdaterService
is a flexible and easy-to-use service for Unity, designed to manage and dispatch update-related
actions (FixedUpdate
, Update
, LateUpdate
) outside of MonoBehaviour
. It allows for a more modular approach to
handling updates, especially useful in projects using dependency injection frameworks like Zenject.
- Separate update methods (
FixedUpdate
,Update
,LateUpdate
) outsideMonoBehaviour
. - Easy subscription and unsubscription of actions.
- Pause functionality to control the execution of update actions.
- Automatic cleanup to prevent memory leaks.
- Import the
IActionUpdaterService
package into your Unity project. - Add
ActionUpdaterService
andActionUpdateDispatcher
scripts to your project.
Bind the IActionUpdaterService
in your Zenject installer like this:
public sealed class ServicesInstaller : MonoInstaller
{
public override void InstallBindings()
{
Container.Bind<IActionUpdaterService>().To<ActionUpdaterService>().AsSingle();
}
}
Don't forget to add to the ProjectContext:
Add the ActionUpdateDispatcher
class to the ProjectContext prefab, Bootstrupper or any other object that will be the only one in the game.
Inject IActionUpdaterService into your classes and subscribe to the desired update methods:
public sealed class YourClass
{
private IActionUpdaterService actionUpdater;
[Inject]
private void Constructor(IActionUpdaterService actionUpdater) =>
this.actionUpdater = actionUpdater;
public void SomeMethod()
{
actionUpdater.Subscribe(MyUpdateMethod, UpdateType.Update);
}
private void MyUpdateMethod()
{
// Your update logic here
}
}
Remember to unsubscribe from the service to prevent memory leaks:
public void OnDestroy()
{
actionUpdater.Unsubscribe(MyUpdateMethod, UpdateType.Update);
}
You can pause and resume the execution of update methods:
actionUpdater.SetPause(true); // Pauses updates
actionUpdater.SetPause(false); // Resumes updates
This project is licensed under the MIT License - see the LICENSE file for details.
Developed by RimuruDev.