MLAPI その3
プレイヤとして Cube を置く。ついでにタグも Player にしておく。
サーバ・クライアントで同期が必要なオブジェクト、つまりプレイヤとか、には「NetworkedObject」をアタッチ。
プレイヤは移動させたいから、「NetworkedTransform」もアタッチ。
Project ウィンドウにドロップして Prefab にする。Prefab にしたら Hierarchy ウィンドウから削除しておく。
NetworkingManager の中にある NetworkedPrefabs の+を押して、Prefab のところに PlayerCube をセットする。
最初にチェックを外していた「Create Player Prefab」にチェックを入れなおしておくと、「Start Host」や「Start Client」をクリックしたときに、自動的に自分のプレイヤとしてのオブジェクトが作ってもらえる。「Stop ~」をクリックすると消える。自動的。
NetworkedTransform がついているので、自分のプレイヤのオブジェクトの動きが、他のクライアントにも同期しているのがわかる。
MLAPI その2
続き。
同じように「Start Client」と「Stop Client」のボタンを右上に設置。
同じようにスクリプトを作ってアタッチ。
using System.Collections; using System.Collections.Generic; using UnityEngine; public class StartClient : MonoBehaviour { public void OnClick() { Debug.Log("Start Client"); MLAPI.NetworkingManager.Singleton.StartClient(); } }
using System.Collections; using System.Collections.Generic; using UnityEngine; public class StopClient : MonoBehaviour { public void OnClick() { Debug.Log("Stop Client"); MLAPI.NetworkingManager.Singleton.StopClient(); } }
見栄えがアレなので、適当に Plane を敷いて床にする。
ビルドして、exe を作成、起動して、そちらで「Start Host」ボタンを押す。
片や Unity の方でも Play ボタンを押して、「Start Client」を押す。
これで 2 つのアプリはつながっているはずだけど、何も設定していないので、何もわからない。
今後の追加のあれこれでもっとわかりやすくするために、プロファイラを見えるようにしておく。
各ボタンを押したときに、
public void OnClick()
{
Debug.Log("Start Host");
MLAPI.NetworkingManager.Singleton.StartHost();
+ MLAPI.Profiling.NetworkProfiler.Start(100);
}
を追加しておいて、Window から「MLAPI Profiler」を表示しておく。と良さそう。
参考:
mlapi.network
MLAPI その1
Unity でオンラインマルチプレーヤのやつのメモ。
Releases · MidLevel/MLAPI · GitHub
から「MLAPI.unitypackage」をダウンロードして Unity にインポート。
空の GameObject の NetworkingManager を作って、「NetworkingManager」と「Unet Transport」をアタッチ。
「Network Transport」のところに自分自身のオブジェクトを設定。
[MLAPI] There is no NetworkedPrefab marked as a PlayerPrefab
の警告が出るので、「Create Player Prefab」と「Force Same Prefabs」のチェックを外す。
MLAPI の Host の起動・停止
Host として起動させると、Server・Client の 2 つの性質が使用できる。
画面に Button を二つ追加。一つは「StartHost」スクリプト、もう一つに「StopHost」スクリプトをアタッチ。
using System.Collections; using System.Collections.Generic; using UnityEngine; public class StartHost : MonoBehaviour { public void OnClick() { Debug.Log("Start Host"); MLAPI.NetworkingManager.Singleton.StartHost(); } }
using System.Collections; using System.Collections.Generic; using UnityEngine; public class StopHost : MonoBehaviour { public void OnClick() { Debug.Log("Stop Host"); MLAPI.NetworkingManager.Singleton.StopHost(); } }
各 Button の On Click () から「StartHost.OnClick」と「StopHost.OnClick」を選択する。
シーンを起動して、「Start Host」ボタン、「Stop Host」ボタンを押して、エラーが出ないことを確認する。