상세 해설 - 글로벌 콜백

Bolt는 Bolt 내부에서 다양한 액션이 일어날 때 발생되는 다양한 글로벌 콜백 메소드들을 후킹하는 것을 할 수 있습니다. 이러한 콜백들을 구현하기 위해서는 새로운 C# 스크립트를 생성하고 MonoBehaviour 대신 Bolt.GlobalEventListener 에서 상속을 받습니다. 아래는 이에 대한 예제입니다.

using UnityEngine;
using System.Collections;

public class NetworkCallbacks : Bolt.GlobalEventListener {

}

예를 들면 Connected 메소드를 구현하여 새로운 피어가 연결되었을 때 Bolt가 매번 우리에게 알려주는 것을 할 수 있습니다. 구현할 수 있는 모든 콜백에 대한 목록은 API 문서에서 찾아보실 수 있습니다.

using UnityEngine;
using System.Collections;

public class NetworkCallbacks : Bolt.GlobalEventListener {
  public override void Connected(BoltConnection connection) {
    Debug.Log(connection.ToString() + " connected to us");
  }
}

중요: Bolt는 C# 표준인 public override ... 를 사용하며 Unity 처럼 override 키워드를 지정하지 않는 방식이 아닙니다.

Bolt가 콜백 스크립트를 감지하여 메소드를 호출 할 수 있는 2가지의 방식이 있습니다. 가장 기본적인 방식은 기본인 'Unity thing' 을 수행하여 다른 스크립트에 했던 것과 같이 씬에 있는 게임 오브젝트에 붙이는 것입니다. 다른 방식은 [BoltGlobalBehaviour] 속성을 사용하는 것으로 이 속성을 아래처럼 콜백 클래스에 지정한다면 Bolt는 자동적으로 클래스를 찾아서 인스턴스를 생성하여 Bolt와 같이 생존하게 하며 Bolt가 셧다운 되었을때 파괴합니다.

using UnityEngine;
using System.Collections;

[BoltGlobalBehaviour]
public class NetworkCallbacks : Bolt.GlobalEventListener {
  public override void Connected(BoltConnection connection) {
    Debug.Log(connection.ToString() + " connected to us");
  }
}

이 속성을 사용한다는 의미는 게임 객체를 수작업으로 다룰 필요가 없다는 것입니다. 속성에 2개의 파라미터를 지정하여 몇 가지 옵션을 커스터마이징 할 수 있는데 여기에 이에 대한 몇 가지 예가 있습니다.

서버에서 호출된 콜백만을 원하면 첫 번째 파라미터로 BoltNetworkModes.Server 를 전달할 수 있습니다:[BoltGlobalBehaviour(BoltNetworkModes.Server)] 동일하게 클라이언트에 콜백만을 원하면:BoltNetworkModes.Client 을 전달합니다.

씬 이름 [BoltGlobalBehaviour("Level1")] 을 전달함으로써 특정 씬에서 활성되어 있는 콜백만을 받도록 지정할 수 있습니다. 또한 씬 이름을 연달아서 전달 할 수도 있습니다: [BoltGlobalBehaviour("Level1", "Level2")]. 또는 일반 표현식을 지정하여 씬 이름이 일치하는 몇개의 씬을 지정할 수도 있습니다: [BoltGlobalBehaviour(@"Level\d")].

그리고 마지막 옵션으로 클라이언트/서버 모드 옵션을 조합하고 씬 이름을 필터링 할 수 있습니다: [BoltGlobalBehaviour(BoltNetworkModes.Server, @"Level\d")]

기술문서 TOP으로 돌아가기