젠젝트에는 일반 Class(Non-MonoBehaviour)를 유니티의 MonoBehaviour처럼 사용할 수 있게하는 몇가지 Interface가 존재한다.
IInitializable 인터페이스는 Initialize 메서드를 구현한다.
Initialize 메서드는 유니티의 Start() 단계에서 호출된다.
ITickable 관련 인터페이스는 Tick 메서드를 구현한다.
Tick 메서드는 유니티의 Update(), LateUpdate(), FixedUpdate() 단계에서 호출된다.
IDisposable 인터페이스는 Dispose 메서드를 구현한다.
Dispose 메서드는 유니티의 OnDestroy() 단계에서 호출된다.
Example
public class TwitterService : IInitializable, IDisposable, ITickable
{
private string _apiKey;
public TwitterService (string apiKey)
{
_apiKey = apiKey;
}
public void Initialize()
{
Authenticate();
}
public void Dispose()
{
Deauthenticate();
}
public void Tick()
{
if (IsOverRateLimit()) { ... }
}
}
public class GameInstaller : MonoInstaller<GameInstaller>
{
Container.BindInterfacesAndSelfTo<TwitterService>();
// BindInterfacesAndSelfTo()는 아래와 동일하다.
// Container.BindInterfacesTo<TwitterService>();
// Container.Bind<TwitterService>();
// 아래와도 동일하다.
// Container.Bind<IInitializable>().To<TwitterService>();
// Container.Bind<IDisposable>().To<TwitterService>();
// Container.Bind<ITickable>().To<TwitterService>();
}