0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【Strix】PhotonからStrix Cloudに移行してみた ~オブジェクト同期編~

Last updated at Posted at 2021-07-29

今記事は以下の記事のオブジェクト同期編です。

まだメインの記事を読んでない方はそちらから読んでいただけると幸いです。

Strix Cloudにおけるオブジェクト同期までを解説していきたいと思います。

##変数の同期
変数を同期するにはMonoBehaviourの代わりにStrixBehaviourを継承させたコンポーネントで同期します。
また、変数を同期する方法は2つあります。

###StrixSyncField 属性を付ける

[StrixSyncField]
public int hp = 100;

[StrixSyncField]
public bool isAlive = true;

シリアル化可能なフィールドであれば、変更がすべての所有者で自動的に同期されます。

###シリアル化メソッドを利用する

public int hp = 100;
public bool isAlive = true;

//フィールドをシリアライズする(ローカルでのみ実行)
public override void OnStrixSerialize(StrixSerializationProperties properties)
{
    base.OnStrixSerialize(properties);
    properties.Set(0, hp); //properties.Set(変数の識別ID, 同期したいフィールド)
    properties.Set(1, isAlive);
}

//フィールドをデシリアライズする(リモートでのみ実行)
public override void OnStrixDeserialize(StrixSerializationProperties properties)
{
    base.OnStrixDeserialize(properties);
    properties.Get(0, ref hp); //properties.Get(変数の識別ID, 同期したいフィールドを参照渡し)
    properties.Get(1, ref isAlive);
}

特徴としては、フィールドに識別IDを付ける部分です。
PUN2では必ず送信順に受信する必要がありましたが、Strixでは順番は関係ありません。
順番を間違えてバグの温床になったりしていたのでこれはありがたいですね。

##Transform & Animator の同期
上の変数を同期する方法で座標も同期できるので基本的に説明は省きますが、
Strix側でTransformとAnimatorを同期できるコンポーネントが用意されてます。

StrixMovementSynchronizer

StrixAnimationSynchronizer

StrixMovementSynchronizerは細かく設定できますが、結構面倒なので少し微妙です。
シンプルなPUN2のPhotonTransformViewのStrix版をGitHubに上げたので、そちらも参考にしてみてください。

次回はStrixにおけるRPC & MessageRelayを解説します!
【Strix】PhotonからStrix Cloudに移行してみた ~RPC & MessageRelay編~

##参考リンク
変数の同期

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?