This document is about: FUSION 2-SHARED
SWITCH TO

カスタム型

概要

ネットワークプロパティRPCは、カスタム型をサポートしています。カスタム型は、INetworkStructインターフェースを実装した構造体である必要があります。

C#

public struct CustomStruct : INetworkStruct
{
    public int IntField;
}

対応するフィールドの型

INetworkStructは、一部の型のみをサポートしています。

  • Primitives: byte, short, int, long, ushort, uint, ulong, float, double
  • Unity Types: Vector2, Vector3, Vector4, Quaternion, Vector2Int, Vector3Int, Rect, RectInt Color, Color32
  • Fusion Types: NetworkString<>, NetworkBool, Angle, NetworkId, PlayerRef, SceneRef, TickTimer
  • Structs implementing INetworkStruct

ブールと文字列

INetworkStruct内でboolとstringは使用しないでください。

NetworkBoolNetworkString<T>をかわりに使用してください。以下のようにして、普通のbool/stirngと同じように値を取得/設定できます。

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; }
}

入れ子のINetworkStructsのOnChanged

入れ子のINetworkStructOnChangedコールバックは、構造体全体の変更を検知しますが、個々の値を変更を監視することはできません。個々のフィールド/プロパティに対するコールバックが必要な場合は、その変数をNetworkBehaviourのネットワークプロパティとして保持してください。

Back to top