티스토리 뷰

서버(Server) 측 콜백 메서드 순서

  1. Awake (Unity의 MonoBehaviour 메서드)
    • 네트워크 관리자를 초기화할 때 사용됩니다.
  2. Start (Unity의 MonoBehaviour 메서드)
    • 네트워크 관리자가 시작될 때 사용됩니다.
  3. OnStartServer
    • 서버가 시작되었을 때 호출됩니다. 서버 초기화 작업을 수행하는 데 사용됩니다.
    • 일반적으로 네트워크를 시작한 후 서버 준비 작업을 수행합니다.
  4. OnServerConnect(NetworkConnectionToClient conn)
    • 클라이언트가 서버에 처음 연결될 때 호출됩니다.
    • 클라이언트의 연결을 허용할지 또는 거부할지 결정할 수 있습니다.
  5. OnServerAddPlayer(NetworkConnectionToClient conn)
    • 새 클라이언트가 연결된 후, 해당 클라이언트에 대한 플레이어 객체가 생성될 때 호출됩니다.
    • 하지만 플레이어 객체의 Start()가 실행되기 전에 호출되는 것 같습니다.
    • 플레이어 객체를 초기화하거나 게임에 추가하는 작업을 수행할 수 있습니다.
  6. OnRoomServerAddPlayer(NetworkConnectionToClient conn) (NetworkRoomManager를 상속한 경우)
    • 클라이언트가 연결되고 룸 씬에서 룸 플레이어 객체가 생성될 때 호출됩니다.
    • 룸 기반 게임의 경우, 룸 플레이어 객체의 설정을 관리합니다.
    • 그런데 이 메서드를 호출하는 곳이 없다...!
     
  7. OnServerReady(NetworkConnectionToClient conn)
    • 클라이언트가 준비 상태(ready)가 되었을 때 호출됩니다. 클라이언트가 씬을 로드하고 플레이어 객체를 제어할 준비가 되었음을 의미합니다.
    • 게임에서 모든 클라이언트가 준비되었을 때 시작할 수 있도록 합니다.
  8. OnServerSceneChanged(string sceneName)
    • 서버의 씬이 변경된 후 호출됩니다.
    • 새로운 씬에서 필요한 초기화 작업을 수행합니다.
    • NetworkRoomManager에선 OnRoomServerSceneChanged()가 마련되어 있습니다.
    • if (sceneName == GameplayScene) 처럼 씬 이름과 비교하여 원하는 조건을 걸면 될 것 같습니다.
  9. OnServerDisconnect(NetworkConnectionToClient conn)
    • 클라이언트가 서버에서 연결이 끊어질 때 호출됩니다.
    • 클라이언트의 데이터 정리나 연결 해제 시 처리할 작업을 수행할 수 있습니다.
    • StopClient()에서 호출 됩니다.
  10. OnStopServer
    • 서버가 종료될 때 호출됩니다.
    • 서버 종료 전 정리 작업을 수행합니다.

클라이언트(Client) 측 콜백 메서드 순서

  1. Awake (Unity의 MonoBehaviour 메서드)
    • 네트워크 관리자를 초기화할 때 사용됩니다.
  2. Start (Unity의 MonoBehaviour 메서드)
    • 네트워크 관리자가 시작될 때 사용됩니다.
  3. OnStartClient
    • 클라이언트가 시작될 때 호출됩니다.
    • 클라이언트 초기화 작업을 수행하는 데 사용됩니다.
    • StartClient()에서 실행됩니다.
  4. OnClientConnect
    • 클라이언트가 서버에 성공적으로 연결되었을 때 호출됩니다.
    • 서버와 연결된 후 초기화 작업을 수행합니다.
  5. OnClientSceneChanged
    • 서버에서 클라이언트로 씬 전환 명령이 보내진 후 클라이언트에서 씬이 변경되었을 때 호출됩니다.
    • 새로운 씬에서 필요한 초기화 작업을 수행합니다.
    • NetworkClient.AddPlayer()가 실행되는 곳입니다. 즉, 씬이 다 불러와지면 객체가 생성되나 봅니다.
  6. OnRoomClientSceneChanged
    • 룸 씬에서 클라이언트가 씬 전환 명령을 받고 씬이 변경된 후 호출됩니다.
    • 새로운 씬에서 룸 관련 객체 초기화 작업을 수행합니다.
    • NetworkRoomManager의 메서드로써, 위의 OnClientSceneChanged 에서 실행됩니다.
    • 일단은 비어있는 메서드이므로 자유롭게 써도 좋을 듯 싶습니다.
  7. OnClientAddPlayer
    • 아쉽게도 이런 콜백 메서드는 없습니다.
    • 대신 플레이어 객체의 Start를 활용할 수 있습니다.
    • 하지만 네트워크 객체로써 더 정확한 타이밍은 NetworkBehaviourOnStartLocalPlayer()일 것입니다...
  8. OnClientDisconnect
    • 클라이언트가 서버로부터 연결이 끊어졌을 때 호출됩니다.
    • 연결이 끊어진 후 클라이언트에서 정리 작업을 수행합니다.
  9. OnRoomClientDisconnect
    • NetworkRoomManager의 메서드로써, 위의 OnClientDisconnect에서 실행됩니다.
  10. OnStopClient
    • 클라이언트가 종료될 때 호출됩니다.
    • 클라이언트 종료 전 정리 작업을 수행합니다.

 

 


 

RoomManager를 사용하는 이유는

로비 씬과 인 게임 씬을 나누고

서버 연결 상태에 따라 씬 이동을 자동으로 하기 위해서일 것이다. 

 

때문에 씬을 이동하는 과정에서 호출되는 콜백 함수를 정리하여 이해하고자 했다.

 

  • 씬 이동 전:
    1. ServerChangeScene(string newSceneName)
    2. OnServerChangeScene(string newSceneName)
      • OnServerChangeSceneServerChangeScene 안에 있는 메서드...
  • 씬 이동 시작 시:
    1. OnClientChangeScene(string newSceneName, SceneOperation sceneOperation, bool customHandling)
  • 씬 이동 완료 후:
    1. OnServerSceneChanged(string sceneName)
    2. OnRoomServerSceneChanged(string sceneName) (오버라이드)
    3. OnClientSceneChanged(NetworkConnection conn)

 

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함