下記でUnityを使い始めましたが、ネットワークについてテストしてみました。
http://crossframe.iiv.jp/201611241241/
参考: http://qiita.com/yaegaki/items/4cedd30abffa9ae3392e
通信の内容が気になったので、MacとWindows間て通信したものをキャプチャしてみました。
Windows(クライアント)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
using UnityEngine; using System.Collections; using UnityEngine.Networking; public class NewBehaviourScript1 : MonoBehaviour { class Msg { public const short Text = MsgType.Highest + 1; } class Message : MessageBase { public string Text; } void Start () { Debug.Log("Start!"); var client = new NetworkClient(); client.RegisterHandler(Msg.Text, networkMessage => { Debug.Log("res : " + networkMessage.ReadMessage<Message>().Text); Vector3 pos = transform.position; pos.x = 3; pos.y = 3; pos.z = 3; transform.position = pos; }); client.RegisterHandler(MsgType.Connect, _ => { client.Send(Msg.Text, new Message() { Text = "Hello!" }); }); client.Connect("192.168.11.11", 7005); } void Update () { } } |
Mac(サーバ)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
using UnityEngine; using System.Collections; using UnityEngine.Networking; public class NewBehaviourScript1 : MonoBehaviour { class Msg { public const short Text = MsgType.Highest + 1; } class Message : MessageBase { public string Text; } void Start () { Debug.Log("Start!"); NetworkServer.Reset(); NetworkServer.RegisterHandler(Msg.Text, networkMessage => { var mes = networkMessage.ReadMessage<Message>(); Debug.Log("recv:" + mes.Text); networkMessage.conn.Send(Msg.Text, new Message() { Text = "Hello from Mac" }); }); NetworkServer.Listen("0.0.0.0", 7005); } void Update () { } } |
UDP通信で、先頭にUnity固有のデータがあるように見えます。
クライアント側では取得したデータをもとにオブジェクトを移動すると想定して、座標指定をしています。