どうも、わたたかです。
半ベソをかきながらもTwitterでアドバイスを頂き前回の問題を解決したので
その方法について書いていきます。
上リンクを見て頂けると分かる通り自身が作成したCardControllerでは
photonnetwork.instantiateを使用することが出来ずどうにか他の方法は無いかと模索していました。
そこでRPCと言うものを使って生成と同期の処理を行うことにしました。
参考リンク
https://connect.unity.com/p/pun2deshi-meruonraingemukai-fa-ru-men-sono3
訂正箇所
前回
public void Init(int cardID)
{
model = new CardModel(cardID);// 生成
view.Show(model);// 反映
}
訂正後
using Photon.Pun
[PunRPC]
public void Init(int cardID)
{
model = new CardModel(cardID);// 生成
view.Show(model);// 反映
}
[PunRPC]
public void OnlineInit(int cardID)
{
photonView.RPC(nameof(Init), RpcTarget.All,cardID);
}
こうすることによってphotonnetwork.instantiateを使用しなくてもオブジェクトを生成することが出来ました。空のオブジェクトにPhoronView.csをつけるのを忘れないように。
あとは追加で
// ルーム入室時に呼ばれる関数
public override void OnJoinedRoom()
{
Debug.Log("ルームへ入室しました!");
StartGame();
}
ルームに入室してからゲームを始める処理を開始することでよく分からないサーバーエラーから逃れることが出来ました。
まとめとこれから
無事カードを生成することが出来ましたがそれも束の間。
次はIllegal view ID:0 method: Init GO:PlayerCard (PlayerCardは空のカードPrefabの名前)
と言ったエラーが出て今度は頭を捻らせてます。
一難去ってまた一難はこういうことなんですね。
オブジェクトにPhoton viewID?と言うのが付いていないから出ているエラーっぽいですが
スクリプトのPhotonView.csを外すと生成すらされなくなるので外せないです。
解決策が分かる方がいましたらコメント、Twtter(@wttk05)のDMお待ちしてます。
3月までに人に遊んでもらえる状態まで持っていきたいなぁ...(遠い目)
それではさようなら。