변화 감지
개요
네트워크 속성을 사용할 때 일반적인 사용 사례는 네트워크 속성 값이 변경될 때마다 코드를 실행하는 것입니다.
OnChangedRender
OnChangedRender
속성은 렌더 기반 변화 감지를 처리하는 가장 쉬운 방법입니다.
네트워크 속성에서 변화를 감지하려면 해당 속성에 OnChangedRender
속성을 추가하세요. 이 속성은 메서드 이름을 매개변수로 사용합니다. 제공된 메서드는 동일한 NetworkBehaviour
에서 void 함수여야 합니다.
중요: OnChangedRender
는 객체가 클라이언트에서 처음 생성될 때 호출되지 않습니다. 객체를 초기화하려면 override Spawned
함수를 사용해 변경된 함수를 호출하거나 수동으로 객체를 초기화하세요.
예제:
C#
public class Example : NetworkBehaviour
{
[Networked, OnChangedRender(nameof(OnColorChanged))]
public Color NetworkedColor { get; set; }
public Material material;
public void OnColorChanged()
{
material.color = NetworkedColor;
}
}
nameof(OnColorChanged)
를 사용하여 속성에 메서드 이름 문자열을 제공하면 이름을 하드 코딩하지 않아도 됩니다. 이는 함수 이름을 리팩토링할 때 속성이 자동으로 새 이름으로 업데이트되도록 보장합니다.이전 값
변경이 발생하기 전의 이전 값에 접근할 수 있습니다.
C#
[Networked]
[OnChangedRender(nameof(CounterChanged))]
public int Counter { get; set; }
void CounterChanged(NetworkBehaviourBuffer previous)
{
var prevValue = GetPropertyReader<int>(nameof(Counter)).Read(previous);
Log.Info($"counter changed: {Counter}, prev: {prevValue}");
}
GetPropertyReader<T>
를 호출할 때 사용되는 타입은 Networked Property의 타입과 일치해야 합니다.