This document is about: FUSION 2
SWITCH TO

4 - 네트워크 속성

개요

이 섹션에서는 네트워크화된 속성을 사용하여 플레이어의 위치 외에 네트워크를 통해 추가 데이터를 동기화하는 방법을 보여줍니다.

네트워크 속성

NetworkTransform 컴포넌트를 추가하면 NetworkObjects 변환이 동기화됩니다. 스크립트의 변수와 같은 다른 상태는 네트워크를 통해 동기화되지 않습니다. 네트워크를 통해 상태를 동기화하려면 [Networked] 속성이 필요합니다. 네트워크화된 속성은 상태를 StateAuthority에서 다른 모든 클라이언트로 동기화합니다.

클라이언트가 StateAuthority가 없는 객체의 네트워크화된 속성을 변경하는 경우 네트워크를 통해 동기화되지 않고 로컬 예측으로 적용되며 향후 StateAuthority의 변경으로 인해 재정의될 수 있습니다. 모든 클라이언트에 대해 업데이트하려면 StateAuthority의 네트워크화된 속성만 업데이트하도록 주의하십시오.

네트워크 속성의 간단한 예로 플레이어의 색상을 들 수 있습니다. 먼저 새 스크립트를 만들고 PlayerColor라고 이름을 붙입니다. 네트워크 속성과 개체의 MeshRender를 참조할 수 있는 공용 필드를 추가합니다.

C#

using Fusion;
using UnityEngine;

public class PlayerColor : NetworkBehaviour
{
    public MeshRenderer MeshRenderer;
    
    [Networked]
    public Color NetworkedColor { get; set; }
}

네트워크 속성은 속성({get; set;})이어야 하며 일반 필드는 지원되지 않습니다.

다음 업데이트에서 StateAuthority이 색상을 변경할 수 있는 코드를 추가합니다:

C#

void Update()
{
    if (HasStateAuthority && Input.GetKeyDown(KeyCode.E))
    {
        // Changing the material color here directly does not work since this code is only executed on the client pressing the button and not on every client.
        NetworkedColor = new Color(Random.Range(0f, 1f), Random.Range(0f, 1f), Random.Range(0f, 1f), 1f);
    }
}

버튼을 누르면 MeshRender의 색상이 즉시 변경되지 않습니다. 대신 네트워크화된 속성이 업데이트됩니다. 이렇게 하면 색상의 변경 사항이 모든 클라이언트에 복제됩니다. 이제 각 클라이언트가 네트워크화된 속성의 변경 사항을 확인하고 이에 따라 메시 색상을 조정하는 것입니다.

Fusion에서는 ChangeDetection을 사용합니다. 가장 간단한 방법은 OnChangedRender 속성을 사용하는 것입니다. 먼저 NetworkedColor가 변경될 때마다 실행될 함수를 추가합니다.

C#

void ColorChanged()
{
    MeshRenderer.material.color = NetworkedColor;
}

그런 다음 OnChangedRender 속성으로 네트워크화된 속성을 조정합니다:

C#

[Networked, OnChangedRender(nameof(ColorChanged))]
public Color NetworkedColor { get; set; }

이 속성은 각 렌더 프레임(유니티 Update) 동안 속성에서 변경 사항이 감지될 때마다 ColorChanged 함수를 호출합니다.

PlayerCharacter 프리팹에 PlayerColor 컴포넌트를 추가하고 플레이어의 MeshRender를 연결합니다. 플레이 모드로 들어가 E를 누릅니다. 플레이어가 색상을 변경하는 것은 편집 보기에서 확인할 수 있습니다. 이때 네트워크를 통해 색상이 올바르게 동기화되었는지 확인하기 위한 빌드를 만들 수도 있습니다.

다음 공유 모드 기초 5 - 원격 프러시저 호출

Back to top