2016-04-08 3 views
1

サーバーの文字とクライアントの文字に特定の情報を割り当てたい。今、プレイヤーがホストかクライアントかをどのように知ることができますか?私はisServerisClientを使ってみましたが、どちらもtrueを返します。これらは私が使用すべき正しいキーワードですか?プレーヤーがホストかクライアントかを判断する

void Update() { 
     if(isServer){ 
      Debug.Log("I'm the server"); 
     } 

     if(isClient){ 
      Debug.Log("I'm the client"); 
     } 
} 
+0

あなたのクラスはNetworkBehaviourから継承していますか? – marsh

+0

はい、NetworkBehaviourから継承しています。 – kmf

答えて

2

代わりの選手がクライアントであるかどうかを判断するためにisClientを使用して、私の代わりに!isServerを使用しています。

void Update() { 
     if(isServer){ 
      Debug.Log("I'm the server"); 
     } 

     if(!isServer){ 
      Debug.Log("I'm the client"); 
     } 
} 
1

あなたが「ホスト」として接続している場合は、実際には同時に「クライアント」と「サーバ」両方です。これは、サーバー権限として機能する「クライアント」接続を表す「専用サーバー」を実行するのとは対照的です。あなたがあなた自身の答えで提案するように、あなたはisServer!isServer、または多分を使用することができます。

void Update() { 
    if (isServer) { 
     Debug.Log("I'm the server (or host)"); 
    } else { 
     Debug.Log("I'm the client"); 
    } 
} 
0

これはあらゆる状況に適用されますので、私はそれがない場合は謝罪かどうかわからない - 私はNATTraversalと呼ばれるプラグインを使用していますUnityと私は同様の問題を抱えていました。ホストとの接続を見つける必要がありました。私は中継サーバを使用していないので、私のため、..私は、私は、このチェックを行うことができますことを見出した。これは私のシナリオで動作します

using UnityEngine.Networking; 

void Start(){ 
    if(NetworkServer.connections.Count > 0){ 
     Debug.Log("This is the host."); 
    } else { 
     Debug.Log("This is a client."); 
    } 
} 

(これはリレーを避けている皆さんのためです)クライアントの接続理由リストは空ですが、ホストはありません。これを行うには良い方法があるかもしれませんが、NetworkIdentityの以前に構築されたリストがない場合はわかりません。

Network.isServer boolは常に私のためにfalseを返します。だから、私はそれをどうやって取得しました。うまくいけば、それは誰かを助けてくれるでしょう。

編集:(重要な情報を追加する) これは後のマッチメイキングであり、接続が確立されていることに注意してください。

私が見つけた別の方法は、NATLobbyManagerのOnServerConnectをリッスンすることです。唯一、NATTraversalプラグインでホストするために、すべてのこのようなものを把握しようとしているときに、この遭遇する可能性があり、誰のためのより多くの情報をトリガーするイベント

public override void OnServerConnect(NetworkConnection conn){ } 

。 :)

関連する問題