This document is about: FUSION 2-SHARED
SWITCH TO

커스텀 타입

개요

Networked PropertiesRPC를 위한 커스텀 타입이 지원됩니다.
커스텀 타입은 반드시 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을 직접 사용하지 마세요.

대신 NetworkBoolNetworkString<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 속성으로 유지하세요.

Back to top