---
最初にクライアントに接続、接続できなければホストがないと見なしてホストを開始し、登録されたオブジェクトをSpawnする
http://motoyama.hateblo.jp/entry/unet-10
---
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.Networking; public class Apple : NetworkBehaviour { // Start is called before the first frame update [SerializeField] NetworkManager NManager; [SerializeField] GameObject TestPrefab; bool isCreate = false; void Start(){ var nc = NManager.StartClient(); if(!nc.isConnected){ NManager.StartHost(); SpawnObject(); } } void SpawnObject(){ var enemy = (GameObject)Instantiate(TestPrefab, Vector3.zero,Quaternion.identity); NetworkServer.Spawn(enemy); } }
---
サーバー接続時、クライアント接続時にメッセージを表示
UNET⑭ NetworkManagerをカスタマイズして、プレイヤー生成処理などを独自のものにする - MOTOYAMA BLOG
NetworkManagerはプロジェクト内で一つにしないと正常に機能しないっぽい
ホストは自身にサーバーを作ると同時にそのサーバーにローカルクライアントとして接続するので、ホスト側はServerConnectとClientConnectの両方のメッセージが表示される
isConnectedでチェックしないと二回コールされるので、どうも接続失敗時にもコールバックは起きるっぽい
IP,ポートの設定はNetworkManager.networkAddress,.networkPortにセットすればいい
---
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; using UnityEngine.Networking; public class MyNetworkManager : NetworkManager { [SerializeField] Text CText; public override void OnServerConnect(NetworkConnection conn){ if(conn.isConnected){ CText.text += "ServerConnect MyNetworkManager\n"; Debug.Log("ServerConnect MyNetworkManager"); } } public override void OnClientConnect(NetworkConnection conn){ if(conn.isConnected){ CText.text += "ClientConnect MyNetworkManager\n"; Debug.Log("ClientConnect MyNetworkManager"); } } }