NetworkObject Visibility이란?
Object (NetworkObject) visibility는 Netcode에서 사용하는 용어로써, 하나 이상의 클라이언트들에게 보여지고 있는지 사용됩니다
Visibility사용하기
Visibility을 사용하는 한 가지 방법은 NetworkObject.CheckObjectVisibility callback을 등록하는 것입니다.
아래의 예시를 보면 콜백이 NetworkObject가 클라이언트에게 보이는지를 결정하기 위해 사용되는 파라미터로서 클라이언트 식별값(ClientID)을 포함하고 있는 것을 볼 수 있습니다.
보여지고 있는지 확인하는 방법으로는 NetworkObject.CheckObjectVisibility에 Callback을 등록하는 것입니다!
NetworkObject netObject = GetComponent<NetworkObject>();
netObject.CheckObjectVisibility = ((clientId) => {
// return true to show the object, return false to hide it
if (Vector3.Distance(NetworkManager.Singleton.ConnectedClients[clientId].PlayerObject.transform.position, transform.position) < 5)
{
// Only show the object to players that are within 5 meters. Note that this has to be rechecked by your own code
// If you want it to update as the client and objects distance change.
// This callback is usually only called once per client
return true;
}
else
{
// Hide this NetworkObject
return false;
}
});
Additional Visibility Methods
NetworkObject netObject = GetComponent<NetworkObject>();
netObject.NetworkShow(clientIdToShowTo);
싱글 클라이언트에게만 보여지게 해줍니다
NetworkObject netObject = GetComponent<NetworkObject>();
netObject.NetworkHide(clientIdToHideFrom);
싱글 클라이언트에게만 안보이게 해줍니다
/// networkObjects is of type List<NetworkObject>
NetworkObject.NetworkShow(networkObjects, clientId);
싱글 클라이언트에게 몇 개의 NetworkObjects만을 보여지게 해줍니다
/// networkObjects is of type List<NetworkObject>
NetworkObject.NetworkHide(networkObjects, clientId);
싱글 클라이언트에게 몇 개의 NetworkObjects만을 안보이 해줍니다