커스텀 타입
개요
Networked Properties와 RPC를 위한 커스텀 타입이 지원됩니다.
커스텀 타입은 반드시 struct
여야 하며, INetworkStruct
인터페이스를 구현해야 합니다.
C#
public struct CustomStruct : INetworkStruct
{
public int IntField;
}
지원되는 필드 타입
INetworkStruct
는 다음과 같은 제한된 타입만 지원합니다:
- 기본 타입: byte, short, int, long, ushort, uint, ulong, float, double
- 유니티 타입: Vector2, Vector3, Vector4, Quaternion, Vector2Int, Vector3Int, Rect, RectInt, Color, Color32
- Fusion 타입: NetworkString<>, NetworkBool, Angle, NetworkId, PlayerRef, SceneRef, TickTimer
INetworkStruct
를 구현한 구조체
Bool과 String 사용 주의
`INetworkStruct` 안에서는 bool 또는 string을 직접 사용하지 마세요.
대신 NetworkBool
과 NetworkString<T>
를 사용해야 합니다.
이들은 일반적인 bool / string 값처럼 get/set 할 수 있습니다:
C#
using Fusion;
using UnityEngine;
public class NetworkStructSampleCode : NetworkBehaviour
{
public struct CustomStruct : INetworkStruct
{
public NetworkString<_16> Name;
public NetworkBool Bool;
}
public CustomStruct MyStruct { get; set; }
public void SetStringAndBool(string name, bool bool)
{
MyStruct.Name = name;
MyStruct.Bool = bool;
}
}
INetworkStruct 중첩 사용
INetworkStruct
를 구현한 구조체는 다른 INetworkStruct
구조체 안의 필드로 사용할 수 있습니다.
C#
using Fusion;
using UnityEngine;
public class NetworkStructSampleCode : NetworkBehaviour
{
public struct InnerStruct : INetworkStruct
{
public int IntField;
}
public struct OuterStruct: INetworkStruct
{
public InnerStruct Inner;
}
[Networked]
public OuterStruct Outer { get; set; }
}
중첩된 INetworkStruct에 대한 OnChanged
중첩된 INetworkStruct
에 대해 OnChanged 콜백을 사용할 경우,
구조체 전체의 변경을 감지할 수는 있지만, 개별 필드의 변경을 감지할 수는 없습니다.
개별 필드에 대해 콜백이 필요하다면, 해당 값을 NetworkBehaviour
내에 독립된 Networked 속성으로 유지하세요.