忍者ブログ

BlenderLog

Blender x Unity x AviUtl で蒼き鋼のアルペジオのオリジナルアニメやゲーム頑張って作ってみます。 開発記録を掲載します。

[PR]

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

UNETの使い方2

前回は UNET を使って、LAN外からアクセスできるオンラインゲームが作れることを確認しました。
HUDに頼らずにゲームを起動すると
PC側はサーバーとして待受け、Android側は繋がるまでFindし続ける作りにしたいと思います。

ちょっと自分もわからないので調べます。

似たようなキーワードが見つかったのは
NetworkMatch
なんですが、これを使っているという記事を探してみます。

Unity5.1 ネットワークシステム Matchmaker
と
Unity 5.1 から導入された新しいネットワーク機能の UNET について詳しく調べてみた
にありますね。

特に後者はサンプルプログラムまで書かれています。
さすが凹みさんとこの記事ですね。

起動した環境が Android なのか、PCなのか Editor なのかで切り分けることにしてみます。
マクロを見たことがあるのですが

プラットフォーム毎の Define

ここっすね。
両方起動すると繋がる、やってみましょう。

下記コードで起動するとサーバー開始、クライアント接続ができることを確認しました。


using UnityEngine;
using System.Collections;
using UnityEngine.Networking;
using UnityEngine.Networking.Match;

[RequireComponent(typeof(NetworkManager))]
public class NetworkConnector : MonoBehaviour {

public string MatchName = "UnetTest";
public string RoomPass = "B35Fwh3";
public uint MatchSize = 4U;

private NetworkManager _manager;
private NetworkMatch _match;

// Use this for initialization
void Start () {
_manager = GetComponent<NetworkManager>();
_manager.StartMatchMaker();
_manager.matchName = MatchName;
_manager.matchSize = MatchSize;
_match = _manager.matchMaker;

if (Application.platform == RuntimePlatform.WindowsPlayer
|| Application.platform == RuntimePlatform.WindowsEditor)
{
_match.CreateMatch(_manager.matchName, _manager.matchSize, true, RoomPass, _manager.OnMatchCreate);
}
else if (Application.platform == RuntimePlatform.Android)
{
_match.ListMatches(0, 20, MatchName, _manager.OnMatchList);
StartCoroutine(JoinMatch());
}
}

private IEnumerator JoinMatch()
{
yield return new WaitForSeconds(3);
var desc = _manager.matches[0]; // join first room
_match.JoinMatch(desc.networkId, RoomPass, _manager.OnMatchJoined);
yield return 0;
}
}
PR