忍者ブログ

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