#サマリ
MLAPIを使ったマルチプレイアプリの作り方の基本をまとめました。
##環境
- Unity 2019.4.15f1
- MLAPI v12.1.7
- ユニティちゃん 1.2.1
##目次
- プロジェクトの作成
- MLAPIのインポート
- ユニティちゃんの配置
- MLAPIのNetworkManagerの作成
- ユニティちゃんをネットワークオブジェクトとして設定
- UIの作成
- スクリプトの作成
- ユニティちゃんスクリプトの修正
- ビルド
- 動作確認
#1.プロジェクトの作成
#2.MLAPIのインポート
- 下記URLからMLAPIのunitypackageをダウンロードする。
#3.ユニティちゃんの配置
- 下記URLからユニティちゃんの3Dモデルデータをダウンロードする。
#4.MLAPIのNetworkManagerの作成
#5.ユニティちゃんをネットワークオブジェクトとして設定
#6.UIの作成
#7.スクリプトの作成
public void OnClickStartHost()
{
Debug.Log("Start Host!!");
MLAPI.NetworkingManager.Singleton.StartHost();
}
public void OnClickStartClient()
{
Debug.Log("Start Client!!");
MLAPI.NetworkingManager.Singleton.StartClient();
}
#8.ユニティちゃんスクリプトの修正
-
Assets > UnityChan > Scripts > UnityChanControlScriptWithRigidBodyを開く。
-
基底クラスをMonoBehaviourからMLAPI.NetwotkedBehaviourに変更する。
public class UnityChanControlScriptWithRgidBody : MonoBehaviour
{
↓
public class UnityChanControlScriptWithRgidBody : MLAPI.NetworkedBehaviour
{
- 自分自身だけupdateするように、FixedUpdateメソッドの処理をIsOwnerの時だけ処理するようにif文で囲う。
void FixedUpdate ()
{
if (this.IsOwner)
{
float h = Input.GetAxis("Horizontal"); // 入力デバイスの水平軸をhで定義
float v = Input.GetAxis("Vertical"); // 入力デバイスの垂直軸をvで定義
<省略>
// REST中の処理
// 現在のベースレイヤーがrestStateの時
else if (currentBaseState.nameHash == restState)
{
//cameraObject.SendMessage("setCameraPositionFrontView"); // カメラを正面に切り替える
// ステートが遷移中でない場合、Rest bool値をリセットする(ループしないようにする)
if (!anim.IsInTransition(0))
{
anim.SetBool("Rest", false);
}
}
}
}
#9.ビルド
- 起動時にユニティちゃんは複製されるためHierarchyのユニティちゃんは削除する。
-
Project Settings > Player > Resolution and Presentation > Fullscreen Mode をWindowedに変更。
-
Project Settings > Player > Other Settings > Api Compatibility Level を.Net 4.xに変更。
-
適当にフォルダを作って選択。
#10.動作確認