久しぶりの投稿になります。今回は最近よく開発で触る「Photon Unity Network」について勉強したことをまとめたいと思います。
Photonについては上のHPを見ればだいたいなにができるかはわかると思います。
「PUNのはじめかた」
非常に簡単でした。
1, Photonアカウントを作成する
2, サインインし、新しくアプリを作成する
「新しくアプリを作成する」ボタンがあるのでそこをクリック。
Photonの種類:Photon Realtime
アプリケーション名:作成するアプリの名前を入力(自分があとからみてどのアプリに使っているかがわかればなんでも大丈夫)
アプリケーションの説明:なんでもOK
URL:いれなくても大丈夫
そしたら「作成する」ボタンを押して作成。
3, アプリケーションIDを取得する
アプリケーションID :と書いてあるところの横に表示されている文字列をクリックするとIDが表示されるのでコピーしておきましょう。
4, Unity Asset StoreからPUNをダウンロード
FREE版と有料版がありますが、今回はFREE版で。FREE版は20人まで同時接続できます。
5, 先ほどコピーしたIDをUnityの方に登録
上のウィンドウが出てくると思うので「AppId or Email」にペーストし、Setup Project。
もしウィンドウが出なかった時は Alt + P を押すとPhotonの設定ウィンドウ(PUN Wizard)がでてくるのでSetup Projectを押すと同じウィンドウがでてくる。
これにてセットアップ完了〜!
その他設定
必須ではありませんが他にも設定項目があります。
App Id Chat : ボイスチャットを実装するときに入力します。
App Version : 適当な文字列を入力します(例 : 1.0)。ここのゲームバージョンが異なる文字列をもつクライアントを隔離することができる。
Fixed Region : リージョンを固定します。デフォルトでは Best Region SelectionはONになっており、PUNがベストリージョンを選択しますが、ここにリージョンコードを入力することによって Best Region Selection がOFFになり自分で選択したリージョンになります。
Enable Support Logger : 接続やマッチメイキング中、ルームの中で発生した問題をログとして出力してくれます。
※その他の設定は今回使わなかったのでまたわかったら付け加えます。
「サーバー接続とルームへの参加/作成」
Unityで新しいシーンを作成し、保存してください。Create Emptyで新しいオブジェクトを作成し、そのオブジェクトに今回は例として LoginManager という名前のコンポーネントを作成し付与しました。
LoginManagerに以下を記述しました。
PhotonNetwork.ConnectUsingSettings();
この関数を呼ぶと直ちにエディタで設定したようにPhotonに接続します。(PhotonServerSettingsファイルに保存されます)
特に設定しないと、PhotonNetwork.ConnectToMaster() を呼びます。
public override void OnConnectedToMaster() { }
今回特に設定をしていないので、Photonマスターサーバーへ接続されます。この関数は無事にマスターサーバーに接続ができたときに呼ばれます。
PhotonNetwork.JoinOrCreateRoom("name", new RoomOptions(), TypedLobby.Default);
”name” で指定した文字列の部屋があればその部屋に参加し、その名前のルームがない場合は自分でその名前の部屋を作って参加します。
RoomOptionsクラスを使って部屋に諸々設定ができます。設定できる各項目に関してはドキュメントを参照。
TypedLobbyは調べたけどよくわからなかったです....
public override void OnJoinedRoom() { }
ルームに参加した時に呼ばれます。ここでプレイヤーを召喚します。
PhotonNetwork.Instantiate("MyPrefabName", new Vector3(0, 0, 0), Quaternion.identity, 0);
Prefabをゲーム中にインスタンス化します。注意点として、召喚するPrefabはResourcesフォルダの直下に入っている必要があります。またUnityのInstantiateとは違い、第1引数が string なことにも気をつけてください。
プレイヤーの作成
基本的になんでもいいですが、今回はこんなプレイヤーを作ってみました。
このキャラクターをPhotonネットワーク上に出すには、まず PhotonViewコンポーネント を付与します。そしてこのオブジェクトをプレハブ化し、Resourcesフォルダにいれます。
PhotonViewコンポーネントは同期をしたいオブジェクトには必ずつけると覚えておきましょう!
LoginManagerのPlayer変数にこのプレハブをいれて再生してみると...
シーンにPlayerプレハブが配置されました〜!
次回は位置を同期していきます。
0コメント