프로그래밍 정리/Unity

[Unity - 유니티] Network 예제

주누다 2014. 6. 8. 20:07
반응형

Network.Instantiate(프리팹, 위치, 각도, 그룹)

- 현재 게임에 접속한 모든 유저에게 프리팹 생성.

- 내부적으로 Buffered RPC를 호출해 

나중에 접속한 유저도 이미 생성된 프리팹을 볼 수 있음.

- 그룹 지정시 동일 그룹의 유저들에게만 생성됨.


=========================================================

NetworkView

- isMine => NetworkView 가 자신의 것인지 확인.


ex)

// NetworkView가 자신의 것인지 확인.

if(networkView.isMine)

{


}


=========================================================




ex)

void OnGUI(){

// 현재 유저의 네트워크에 접속여부 판단

        if (Network.peerType == NetworkPeerType.Disconnected)

        {

            // 게임 서버 생성 버튼

            if (GUI.Button(new Rect(20, 20, 200, 25), "Start Server"))

            {

                // 게임 서버 생성 : InitializeServer(접속자수, 포트번호, NAT 사용여부)

                Network.InitializeServer(20, port, _useNat);

            }


            // 게임 접속 버튼

            if (GUI.Button(new Rect(20, 50, 200, 25), "Connect to Server"))

            {

                // 게임 서버 접속 : Connect (접속 IP, 접속 포트 번호)

                Network.Connect(ip, port);

            }

        }

        else

        {

            // 서버일 때 메시지 출력

            if (Network.peerType == NetworkPeerType.Server)

            {

                GUI.Label(new Rect(20, 20, 200, 25), "Initialization Server...");

                // Network.connections 속성.

                // Network.coonections는 접속한 유저 정보를 배열로 저장하고 있음.

                // 접속자 수 확인시 Network.connections.Length 로 접속자 수를 확인할 수 있음.

                GUI.Label(new Rect(20, 50, 200, 25), "Client Count = " + Network.connections.Length.ToString());

            }

            // 클라이언트로 접속했을 때의 메시지 출력

            if (Network.peerType == NetworkPeerType.Client)

            {

                GUI.Label(new Rect(20, 20, 200, 25), "Connected to Server.");

            }

            else

            {

                GUI.Label(new Rect(20, 20, 200, 25), "Connected to Server.");                    

            }

        }

}


// 게임 서버로 구동시키고 서버초기화가 정상완료됐을 때 호출

void OnServerInitialized()

{

StartCoroutine(CreatePlayer());

}



// 클라이언트로 게임 서버에 접속했을 때 호출

void OnConnectedToServer()

{

StartCoroutine(CreatePlayer());

}


// 플레이어를 생성시키는 코루틴 함수

IEnumerator CreatePlayer()

{

Vector3 pos = 플레이어 생성할 position;


// 네트워크상 플레이어를 동적생성

// 현재 게임에 접속한 모든 유저에게 프리팹 생성

// 내부적으로 Buffered RPC를 호출해

// 나중에 접속한 유저도 이미 생성된 프리팹을 볼 수 있음.

// 그룹을 지정하면 동일 그룹의 유저들에게만 생성됨.

Network.Instantiate(player, pos, Quaternion.identity, 0);

yield return null;

}

반응형