NetworkVariable の変更点 (2)|unmanaged 制約のため string は利用できない【Netcode for GameObjects】
はじめに
こちらの続きのようなもの.
unmanaged 制約
NetworkVariable は NGO 版から unmanaged 制約がつきました.
[Serializable] public class NetworkVariable<T> : NetworkVariableBase where T : unmanaged
つまり,参照型,クラス型は利用できなくなりました.
string は…?
では string
はどうするかというと,Unity Collections の FixedString32Bytes
を変わりに利用することになります.
FixedString32Bytes
は構造体なので NetworkVariable
として利用することができます.
Unity Collections は NGO をインストールするときに一緒に入ってきます.
以下のようなコードになります.長いけどしゃーないかな….
readonly NetworkVariable<FixedString32Bytes> PlayerName = new NetworkVariable<FixedString32Bytes>(new FixedString32Bytes(""));
ちなみに Unity 2021.2 以降ならば target-typed new expressions が利用できるので,以下のような記法も可能.
readonly NetworkVariable<FixedString32Bytes> PlayerName = new (new FixedString32Bytes(""));
自作の構造体
自作の構造体を NetworkVariable で利用できるようにするためには,INetworkSerializable
を実装することになると思います.