Perl日記

日々の知ったことのメモなどです。Perlは最近やってないです。

MLAPI その3

プレイヤとして Cube を置く。ついでにタグも Player にしておく。

サーバ・クライアントで同期が必要なオブジェクト、つまりプレイヤとか、には「NetworkedObject」をアタッチ。
プレイヤは移動させたいから、「NetworkedTransform」もアタッチ。

Project ウィンドウにドロップして Prefab にする。Prefab にしたら Hierarchy ウィンドウから削除しておく。

f:id:rightgo09:20201203234556p:plain

NetworkingManager の中にある NetworkedPrefabs の+を押して、Prefab のところに PlayerCube をセットする。
最初にチェックを外していた「Create Player Prefab」にチェックを入れなおしておくと、「Start Host」や「Start Client」をクリックしたときに、自動的に自分のプレイヤとしてのオブジェクトが作ってもらえる。「Stop ~」をクリックすると消える。自動的。

f:id:rightgo09:20201203234157p:plain
f:id:rightgo09:20201203234216p:plain

NetworkedTransform がついているので、自分のプレイヤのオブジェクトの動きが、他のクライアントにも同期しているのがわかる。

f:id:rightgo09:20201203234233g:plain

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 つのアプリはつながっているはずだけど、何も設定していないので、何もわからない。

f:id:rightgo09:20201202233842p:plain

今後の追加のあれこれでもっとわかりやすくするために、プロファイラを見えるようにしておく。

各ボタンを押したときに、

     public void OnClick()
     {
         Debug.Log("Start Host");
         MLAPI.NetworkingManager.Singleton.StartHost();
+        MLAPI.Profiling.NetworkProfiler.Start(100);
     }

を追加しておいて、Window から「MLAPI Profiler」を表示しておく。と良さそう。

f:id:rightgo09:20201202233857p:plain


参考:
mlapi.network

MLAPI その1

mlapi.network


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」ボタンを押して、エラーが出ないことを確認する。

f:id:rightgo09:20201201222708p:plain