長らく放置してたUnityでのゲーム制作
最近一からやり直してネットワーク系絡めながらの制作。
こちらのサイトのオンラインゲーム制作を参考にさせてもらいながら
今回はPhotonのPun2とかいうあたらしーのを使ってみながらやってみた。
まだチャット部分に触れてるところなので違いを調べながらやってるついでに調べるの割と苦労したのでこの記事を見た自分以外の人は苦労を知らないでくれ(この記事が間違えてたら許してください)
割とPunの情報しかネットに乗ってないしサイトは基本Punで進めてるからPun2の情報なさ過ぎわろた~~~って感じ。
海外のサイトとかめぐりながら手探りでやっているところPun2での変更点というかPunでこれ使うときPun2でやるならこれやるといいよ~ってのをメモっていこうと思う。
わかりづらかったらコメントにて教えてください。
1つ目
Photon.MonoBehaviour
多分一番最初に詰まるとこ、ねーよ!って感じ。探してもあんまり見つかんない(探し方が悪いかもしれない。
MonoBehaviourPun にすることによって多分ある程度解決します。
これで解決しなかった場合は
MonoBehaviourPunCallbacks を使えばOK。ランチャーとかのスクリプトはこっち使ってください。
2つ目
public override void OnJoinedLobby()
これはロビー作成の時に使うやつ。チャプター2にあたるとこ。
ロビーに入った時に呼ばれる処理。
public override void OnConnectedToMaster()
こいつで多分何とかなる。自分は何とかなった。
public override void OnPhotonRandomJoinFailed(object[] codeAndMsg)
そして入室失敗した時の処理、これはルームがなくて入室失敗した際にルーム自分で作るよーって処理。
Pun2の場合はわざわざ失敗した時の処理を書いて作成せずにOnConnectedToMasterで
PhotonNetwork.JoinOrCreateRoom("room", new RoomOptions(), TypedLobby.Default);
を使う事によってroomという名前のルームに参加(なければ作成)ということができる。
3つ目
PhotonNetwor.inRoomとか、photonView.isMineとかのis,inシリーズ
これらは簡単、iを大文字にするだけで対応してくれます。この程度ならめんどくさいから変えるんじゃねえ
でもここはエラーの詳細を見れば自動で置き換えられる項目があるから問題ないかも。
4つ目
PhotonNetwork.ConnectUsingSettings(_gameVersion);
コレに関しては(_gameVersion)を消すだけで解決します。内容が理解できてないのでどうしてこれで解決するのかは把握してないです。
但しこれで解決するとゲームバージョン云々ができないです、たぶん。
PhotonNetwork.ConnectUsingSettings(); ←その場のみの解決ならこれでOK
5つ目
PhotonNetwork.playerName
これはplayerNameをNickNameにすることで解決。ただしこの解決方法が正しいのかはわかんないけれど現状問題は出てないので多分大丈夫。
あと PhotonNetwork.playerはPhotonNetwork.LocalPlayerにすることで解決。ただしこの(ry
6つ目
photonView.RPC("chat",Targets.All,~省略~);
なんかPun2だとTargets.Allが存在していない模様。
というわけでTargets.Allの代わりにRpcTargetを使うといいです。TargetsじゃなくてTarget。
7つ目
PhotonNetwork.player.ID;
これは返される値がint。
しかし自分が見つけた
PhotonNetwork.LocalPlayer.UserId;
の返される値はstring。
これInt.ParseでなんとかなるんじゃないかなーっとおもってDebug.Log使ってどんなIDが返されるか調べたら英数字組み合わせのIDだったので諦めてstringで受け取るのがいい。
また owner は Owner に代わってます。いちいち変えないで
他にも変える点はそれなりにあったかもしれないけど覚えてないです。
あぁそういえばPun2にはInRoomChatがないので自分はPunとPun2の違いを照らし合わせながら自作しようとしている...
InRoomChatの代わりPun2にあるよって知ってる人いれば教えてください。
0コメント