[Zenject] Interfaces

Dev W·2022년 12월 15일
0

zenject

목록 보기
6/7

젠젝트에는 일반 Class(Non-MonoBehaviour)를 유니티의 MonoBehaviour처럼 사용할 수 있게하는 몇가지 Interface가 존재한다.

  • IInitializable
  • ITickable, ILateTickable, IFixedTickable
  • IDisposable

1. IInitializable

IInitializable 인터페이스는 Initialize 메서드를 구현한다.

Initialize 메서드는 유니티의 Start() 단계에서 호출된다.

2. ITickable, ILateTickable, IFixedTickable

ITickable 관련 인터페이스는 Tick 메서드를 구현한다.

Tick 메서드는 유니티의 Update(), LateUpdate(), FixedUpdate() 단계에서 호출된다.

3. IDisposable

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>();
}

0개의 댓글