カスタム型
概要
ネットワークプロパティと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は使用しないでください。
NetworkBool
とNetworkString<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
入れ子のINetworkStruct
のOnChangedコールバックは、構造体全体の変更を検知しますが、個々の値を変更を監視することはできません。個々のフィールド/プロパティに対するコールバックが必要な場合は、その変数をNetworkBehaviour
のネットワークプロパティとして保持してください。