본문 바로가기

유니티(Unity)

유니티(Unity) Netcode Relay 주의할 점

 

1.자신의 플레이어 오브젝트에 붙어 있는 스크립트만 작동되는 것이아닌 모든 플레이어 오브젝트의 스크립트는

전부 작동한다. 자신의 입장에서는 타 플레이어의 프리팹 또한 자신의 씬 안에 있는 오브젝트 중 하나 이기 때문이다.

쉽게 말해, 모든 것이 로컬에서 돌아갈 때와 같다. 다만 서버를 통해 다른 플레이어의 데이터 값이 로컬 오브젝트에 입혀지게 된다. 예를 들어, 내 기준에서 다른 플레이어를 때린다고해도 이 때린 데이터를 상대방에게 공유하지 않는 이상 그 플레이어는 전혀 영향을 받지 않는다.

 

2. 기본적으로 호스트 위치 기준으로 플레이어가 spawn된다. 씬 이동시 주의할 것. 웬만하면 특별한 경우를 제외하고는 씬을 바뀌는 방식이 아닌 포지션 값만을 바꾸는 것을 추천한다. 엄청 애먹는다. 물론 씬 이동이 어쩔 수 없이 필요한 경우는 이를 미리 고려하여 스크립트를 작성 해야한다.

 

3.OnNetworkSpawn()는 플레이어가 생성될 때 작동한다. 새로 들어온 플레이어 오브젝트 뿐만아니라

기존에 있던 플레이어 오브젝트에도 실행된다. 플레이어 프리팹을 복제하는 방식이라면 함수 실행 순서는

Awake()-OnNetworkSpawn()-Start() 순서로 실행된다.

 

4.client transform을 추가했다면 플레이어들의 위치가 실시간으로 반영되는데 그 밖에 데이터를 송수신하기 위해서는

NetworkVariable을 이용해야한다. 오너 유저만 데이터 쓰기가 가능하고 읽기는 모두가 가능하다.

https://docs-multiplayer.unity3d.com/netcode/current/basics/networkvariable/index.html

'유니티(Unity)' 카테고리의 다른 글

어트리뷰트(Attribute)  (0) 2023.03.03
Unity 디자인 패턴  (0) 2023.02.05
유니티(Unity) 플레이어 벽 뚫림 방지  (0) 2023.02.01
Unity Netcode 절차  (0) 2022.11.19
Unity 동기 비동기 async await  (0) 2022.10.26