This document is about: FUSION 1
SWITCH TO

수정중인 페이지 입니다.

4 - 네트워크 속성

개요

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

네트워크 속성

Fusion은 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 (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에서는 OnChanged 콜백을 사용하여 이 작업을 수행합니다. 먼저 네트워크 속성이 변경될 때마다 호출할 함수를 만듭니다:

C#

private static void NetworkColorChanged(Changed<PlayerColor> changed)
{
    changed.Behaviour.MeshRenderer.material.color = changed.Behaviour.NetworkedColor;
}

변경된 파라미터가 필요하며 속성을 가져오거나 설정하기 위해 변경되는 NetworkBehaviour 인스턴스에 접근할 수 있습니다. 타입은 Changed<PlayerColor>로 네트워크 색상 네트워크 속성의 유형이 아니라 NetworkBehaviour의 타입입니다.

마지막으로, 속성에 콜백을 다시 연결하려면 [Networked] 속성을 다음과 같이 대체합니다:

C#

[Networked(OnChanged = nameof(NetworkColorChanged))]
public Color NetworkedColor { get; set; }

플레이어 객체에 PlayerColor 컴포넌트를 추가하고 보간 대상에서 MeshRender를 연결합니다. 플레이 모드로 진입하고 E를 누르면 플레이어가 색을 변경하는 것을 편집 보기에서 확인할 수 있습니다. 이때 네트워크를 통해 색이 제대로 동기화되었는지 확인할 수 있는 빌드를 만들 수도 있습니다.

다음 공유 모드 기본 5 - 원격 프로시져 호출

Back to top