참고: UNet은 지원이 중단되었으며 향후 Unity에서 삭제될 예정입니다. 현재 새로운 시스템이 개발 중입니다. 자세한 내용과 다음 단계는 이 블로그 포스트와 FAQ를 참조하십시오. |
Unity 멀티플레이어 시스템에는 두 가지 타입의 네트워크로 연결된 게임 오브젝트가 있습니다.
런타임 시점에 동적으로 생성되는 게임 오브젝트
씬의 일부로 저장되는 게임 오브젝트
런타임 시점에 동적으로 생성되는 게임 오브젝트는 멀티플레이어 스폰 시스템을 사용하며, 인스턴스화되는 프리팹은 네트워크 관리자의 네트워크로 연결된 게임 오브젝트 프리팹 리스트에 등록해야 합니다.
하지만 씬의 일부로 저장해서 로드 시 씬에 이미 포함되어 있는 네트워크로 연결된 게임 오브젝트는 다른 방식으로 처리됩니다. 이러한 게임 오브젝트는 클라이언트와 서버에서 씬의 일부로 로드되며, 멀티플레이어 시스템에서 스폰 메시지를 보내기 전 런타임 시점에서 존재합니다.
씬이 로드될 때 ** **클라이언트와 서버 모두에서 씬에 있는 네트워크로 연결된 게임 오브젝트가 모두 비활성화됩니다. 그러면 씬이 완전히 로드될 때 네트워크 관리자가 씬에 있는 네트워크로 연결된 게임 오브젝트를 자동으로 처리하여 전부 등록(이를 통해 클라이언트 간에 동기화가 발생함)하고 활성화합니다. 이는 런타임 시점에 스폰될 때와 유사합니다.
씬을 로드한 후에 네트워크로 연결된 게임 오브젝트를 동적으로 스폰하지 않고 씬에 저장하면 다음과 같은 장점이 있습니다.
네트워크 관리자가 네트워크로 연결된 씬 게임 오브젝트를 스폰하는 경우 해당 게임 오브젝트는 동적으로 스폰된 게임 오브젝트처럼 동작합니다. Unity는 이 게임 오브젝트에 업데이트와 ClientRPC 호출을 보냅니다.
클라이언트가 게임에 참가하기 전에 씬 게임 오브젝트가 서버에서 삭제되면 참가한 새 클라이언트에서 활성화되지 않습니다.
클라이언트가 연결되면 서버에 존재하고 클라이언트에 보이는 각 씬 게임 오브젝트에 대해 ObjectSpawnScene 스폰 메시지가 클라이언트로 전송됩니다. 이 메시지로 인해 클라이언트에 있는 게임 오브젝트가 활성화되고, 메시지에는 서버에서 전송된 해당 게임 오브젝트의 최신 상태가 포함됩니다. 다시 말해, 클라이언트에 보이고 서버에서 삭제되지 않은 게임 오브젝트만 클라이언트에서 활성화됩니다. 이런 씬 게임 오브젝트는 다른 일반적인 게임 오브젝트처럼 클라이언트가 게임에 참가할 때 최신 상태로 시작됩니다.
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.