| | |—| | 참고: UNet은 지원이 중단되었으며 향후 Unity에서 삭제될 예정입니다. 현재 새로운 시스템이 개발 중입니다. 자세한 내용과 다음 단계는 이 블로그 포스트를 참조하십시오.| Unity 멀티플레이어 HLAPI 시스템은 플레이어 게임 오브젝트를 비플레이어 게임 오브젝트와 다르게 처리합니다. 새 플레이어가 게임에 참가하면, 즉 새 클라이언트가 서버에 연결되면 해당 플레이어의 게임 오브젝트는 해당 플레이어의 클라이언트에서 “로컬 플레이어” 게임 오브젝트가 되고, Unity는 플레이어의 연결을 플레이어의 게임 오브젝트와 연관짓습니다. Unity는 게임 플레이어 한 명당 하나의 플레이어 게임 오브젝트를 연결하고, 네트워크 커맨드를 해당 개별 게임 오브젝트로 라우팅합니다. 플레이어는 다른 플레이어가 아닌 자신의 게임 오브젝트에 대해서만 커맨드를 호출할 수 있습니다.
NetworkBehaviour 클래스(네트워크 스크립트를 생성할 때 여기서 파생됨)에는 isLocalPlayer 프로퍼티가 있습니다. 각 클라이언트의 플레이어 게임 오브젝트에서 Unity는 NetworkBehaviour 스크립트에서 해당 프로퍼티를 true로 설정하고 OnStartLocalPlayer() 콜백을 호출합니다. 다시 말해, 각 클라이언트에는 이렇게 설정된 다른 게임 오브젝트가 있습니다. 이는 각 클라이언트에서 다른 게임 오브젝트가 로컬 플레이어를 나타내기 때문입니다. 아래 다이어그램에는 두 개의 클라이언트와 해당 로컬 플레이어가 나와 있습니다.
플레이어 관점에서 볼 때 “해당 플레이어의” 플레이어 게임 오브젝트에만 isLocalPlayer
** **플래그가 설정되어 있습니다. 일반적으로 이 플래그를 스크립트에 설정하여 입력 처리 및 카메라의 게임 오브젝트 추적 여부를 결정하고, 해당 클라이언트에 속한 플레이어에게만 발생해야 하는 클라이언트 측면 동작들을 수행합니다.
플레이어 게임 오브젝트는 서버에서 플레이어(게임을 플레이하는 사람)를 나타내며, 플레이어의 클라이언트에서 커맨드를 실행할 수 있습니다. 이러한 커맨드는 안전한 클라이언트-서버 원격 프로시저 호출입니다. 이 서버 권한 시스템에서 서버의 다른 비플레이어 게임 오브젝트는 클라이언트의 게임 오브젝트로부터 직접 커맨드를 수신할 수 없습니다. 이는 보안을 유지하고 게임 빌드의 복잡도를 줄이기 위한 것입니다. 플레이어 게임 오브젝트를 통해 사용자로부터 들어오는 모든 커맨드를 라우팅하면 이러한 메시지가 올바른 위치와 올바른 클라이언트에서 오는지 확인하고 중앙에서 처리할 수 있습니다.
네트워크 관리자는 클라이언트가 서버에 연결할 때마다 플레이어를 추가합니다. 하지만 특정 상황에서는 입력 이벤트(예: 사용자가 컨트롤러의 “시작” 버튼을 누름)가 발생할 때까지 플레이어를 추가하고 싶지 않을 수도 있습니다. 자동 플레이어 생성을 비활성화하려면 Network Manager 컴포넌트의 인스펙터로 이동해서 Auto Create Player 체크박스를 선택 해제하십시오.
Did you find this page useful? Please give it a rating:
Thanks for rating this page!
What kind of problem would you like to report?
Thanks for letting us know! This page has been marked for review based on your feedback.
If you have time, you can provide more information to help us fix the problem faster.
Provide more information
You've told us this page needs code samples. If you'd like to help us further, you could provide a code sample, or tell us about what kind of code sample you'd like to see:
You've told us there are code samples on this page which don't work. If you know how to fix it, or have something better we could use instead, please let us know:
You've told us there is information missing from this page. Please tell us more about what's missing:
You've told us there is incorrect information on this page. If you know what we should change to make it correct, please tell us:
You've told us this page has unclear or confusing information. Please tell us more about what you found unclear or confusing, or let us know how we could make it clearer:
You've told us there is a spelling or grammar error on this page. Please tell us what's wrong:
You've told us this page has a problem. Please tell us more about what's wrong:
Thank you for helping to make the Unity documentation better!
Your feedback has been submitted as a ticket for our documentation team to review.
We are not able to reply to every ticket submitted.