NetworkRoomManager에서 Start Host나 Start Client를 실행하면Offline Scene에서 Online Scene으로 이동합니다.이후에 벌어지는 일을 정리해봅니다. Online Scene으로 이동하면 NetworkRoomPlayer 객체가 생성됩니다.객체의 Start 구문에서 DontDestroyOnLoad(gameObject)가 실행됩니다. 그리고 싱글톤이 된 NetworkRoomManager의 RoomSlots에 자신을 추가합니다. RoomSlots은 NetworkRoomPlayer형 HashSet입니다.( HashSet : 중복 값을 허용하지 않는 고유한 값의 컬렉션)NetworkRoomManager의 RoomSlots을 조회하면 원하는 플레이어를 호출할 수 있겠습니다..
[SyncVar]라는 Attribute가 있습니다.이 어트리뷰트를 추가한 기본 데이터형(int, float, string...)의 변수는네트워크 상에서 동기화됩니다.(+추가) 다만, Server에서 Spawn을 통해 생성된 네트워크 객체에서만 작동합니다.[SyncVar]가 추가된 변수가 서버에서 변경될 때만 동기화 작업이 이루어집니다.[Command]나 [Server] 어트리뷰트가 추가된 메서드에서 그 변수가 변경되면 되겠습니다.물론 모든 클라이언트의 같은 인스턴스에서만 일어나는 일이겠습니다.같은 인스턴스로 식별되기 위해선 NetworkIdentity가 필요할 것입니다.여기서 값만 변경되면 심심하니 값이 바뀔 때 자동으로 호출되는 메서드도 설정할 수 있습니다.[Hook] 어트리뷰트에 그 메서드를 추가하면..
서버(Server) 측 콜백 메서드 순서Awake (Unity의 MonoBehaviour 메서드)네트워크 관리자를 초기화할 때 사용됩니다.Start (Unity의 MonoBehaviour 메서드)네트워크 관리자가 시작될 때 사용됩니다.OnStartServer서버가 시작되었을 때 호출됩니다. 서버 초기화 작업을 수행하는 데 사용됩니다.일반적으로 네트워크를 시작한 후 서버 준비 작업을 수행합니다.OnServerConnect(NetworkConnectionToClient conn)클라이언트가 서버에 처음 연결될 때 호출됩니다.클라이언트의 연결을 허용할지 또는 거부할지 결정할 수 있습니다.OnServerAddPlayer(NetworkConnectionToClient conn)새 클라이언트가 연결된 후, 해당 클..
NetworkRoomPlayer를 상속받는 클래스를 만든 후 Start를 사용하려고 하였다.당연히 Override를 하면 되겠거니 했는데 virtual 단에서 코드가 꽤 작성되어 있었다. public virtual void Start() { if (NetworkManager.singleton is NetworkRoomManager room) { // NetworkRoomPlayer object must be set to DontDestroyOnLoad along with NetworkRoomManager // in server and all clients, otherwise it will..