質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity3D

Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。

Q&A

解決済

1回答

309閲覧

プレイヤーに合わせてオブジェクトを変更したい

Higawind

総合スコア17

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity3D

Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。

0グッド

1クリップ

投稿2019/10/29 09:28

前提・実現したいこと

Photon Unity Networkingを使ってマルチプレイのゲームを作る際に
プレイヤーのモデルをログインする順番に合わせて変更したいです。
思いついたのは、人が入るたびに1ずつ変数の値を増やし、条件分岐で生成するモデルを変更することなのですが
ゲームを起動するたびに、そのプレイヤーの人のその変数は初期値に戻ってしまうため、結果的に同じモデルになってしまいます。

もし上記のようなことが実現できる手段をご存じの方がおりましたらお教えいただけると幸いです。
よろしくお願いいたします。

補足情報(FW/ツールのバージョンなど)

Unity 2019.2.3f1

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

変数がクライアントごとにリセットされるという事でしたらコチラを参考にサーバーに共有の変数を持たせる事で解決しませんか?

流れとしては
ログイン

変数を聞き出す

変数のインクリメントを要請

変数に対応したモデルを出現させる


データを同期させるためのオブジェクト作成→アタッチ

C#

1public class DataSerializer : Photon.MonoBihaviour 2{ 3 bool isStarted = false;//モデルが作成されているならば真になる変数 4 public int nextModeNumber = 0;//モデル番号が格納されるべき変数 5 6 void OnPhotonSerializeView(PhotonStream phS, PhotonMessageInfo phInfo) 7 { 8 if (phS.isWriting && isStarted)//書き込みターン且つモデル作成済み(nextModelNumberに値が格納済み)ならば次の値を格納させる 9 { 10 phS.SendNext(++nextModeNumber); 11 } 12 else if (!phS.isWriting)//読み込みターンならば共有変数を取得 13 { 14 nextModeNumber = (int)phS.Receivenext(); 15 ≪モデル作成関数≫(nextModeNumber); 16 isStarted = true; 17 } 18 } 19}

上記コードはかなり適当ですが
やっていることは
OnPhotonSerializeView(...)内で
・自分が読み込みターンならば、変数nextModelNumberを取得
・自分はすでにモデル作成を済ませており、書き込みターンならば、変数nextModelNumber+1を格納
という処理です。
自身PUNを使ったのがかなり前のことなのでミスがないとは言えないので参考までに。


回答が的を得ていない。理解できない、やり方がわからない時はお手数ですがコメントお願いします。

投稿2019/10/29 09:54

編集2019/10/29 12:37
KanazawaKureha

総合スコア368

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Higawind

2019/10/29 10:04

お返事ありがとうございます! うう、すみません…やり方がわからないです! ご説明をお願いしてもよろしいでしょうか…? よろしくお願いいたします。
Higawind

2019/10/29 13:45

お返事ありがとうございます! なんとなくやっていることがわかりました!ありがとうございます! ただ、このまま処理を行ってもOnPhotonSerializeView()を呼び出すことができません。 このOnPhotonSerializeView()を呼び出すために二つの引数が必要だと思うのですが、 これはいかにすればよろしいでしょうか?
KanazawaKureha

2019/10/29 14:30

>>一般的に名前にOnと付くメソッドはイベントです。 なので適切な場所に配置してあげることで勝手に呼ばれてくれる(OnCollisionのように)はずですが、データ共有用などにGameObjectを作成しそこにPhotonViewコンポーネントと一緒にアタッチするんだと思います(間違ってたらすみません)。
Higawind

2019/10/29 15:16

どうにも私の環境では上手くいかないみたいです… ですがおかげさまで糸口を見つけることができました。 残りは自分で何とかしてみます! ありがとうございます!
KanazawaKureha

2019/10/30 07:58

あまりお力になれずすみません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問