Version: 5.3 (switch to 5.4b)
言語English
  • C#
  • JS

スクリプト言語

好きな言語を選択してください。選択した言語でスクリプトコードが表示されます。

Network.useProxy

フィードバック

ありがとうございます

この度はドキュメントの品質向上のためにご意見・ご要望をお寄せいただき、誠にありがとうございます。頂いた内容をドキュメントチームで確認し、必要に応じて修正を致します。

閉じる

送信に失敗しました

なんらかのエラーが発生したため送信が出来ませんでした。しばらく経ってから<a>もう一度送信</a>してください。ドキュメントの品質向上のために時間を割いて頂き誠にありがとうございます。

閉じる

キャンセル

マニュアルに切り替える
public static var useProxy: bool;
public static bool useProxy;

説明

プロキシのサポートが必要な場合、トラフィックはプロキシサーバーを通して行われます。

プロキシサーバーは、サーバーとクライアントとの接続に関する問題を解決します。マシンが非NATパンチスルーができるルーターで作動している場合、接続オプションは制限されます。誰も外部からサーバーに接続することができなくなるのでゲームをホストできなくなります (ホストできるのはローカルネットワーク上にいるクライアントのみです)。プロキシサーバーを使用することで、マシンは完全な接続ができるようになりますが、他のサーバーを中継するトラフィックで余計な負荷が発生します。非NATパンチスルーができるクライアントは、プロキシサーバーが正しく設定されでいる限り、それを通してどんなサーバーにも接続することができます。

Unity Technologies は公共で使用するためのプロキシサーバーは提供していません。なので、プロキシサーバーは自身で用意する必要があります。もちろん、パプリック IP アドレスと帯域幅の大きいプロキシサーバーを用意することをおすすめします。

クライアントとして動作させるときは、Network.useProxy を有効にする必要があります。そして、いつものように Network.Connect() でサーバーに接続します。すべてのトラフィックはプロキシサーバーを中継します。サーバーの外部IPと内部IPはまだ通常通り動きます。なのでクライアントが同じネットワーク上にある場合はプロキシ無しで直接サーバーに接続することができます。

サーバーとして動作させるときは、OnServerInitialized(NetworkPlayer) でゲームサーバーを中継する IPやポート(例えばプロキシサーバーでゲームサーバーに割り当てられたポート)を示す NetworkPlayer 構造体を取得します。このIP/ポートは他のプレイヤーが接続するためにも使用できます。サーバーに接続するときに、クライアントで他のサーバーと異なる手順をふむことは必要ありません。技術的に言えばゲームサーバーはプロキシサーバーから助けを得ていることを知る必要はありません。

マスターサーバーを使用している場合、プロキシのサポートを使用しているときは、サーバー用に登録したIP/ポートのみに依存することは出来ません。プロキシサーバーの IP とポートは、マスターサーバに送信されるデータのコメントフィールドに配置して使用することができます。マスターサーバーからホスト情報を受信したクライアントはコメントフィールド内を見て IP/ホストが使用できるかどうかを確認することができます。

重要: サーバーとサーバーに接続するクライアント両方でプロキシサポートを有効にする必要はありません。予想外のことが起こる可能性があります。

	var imaserver: boolean;
	var serverIP: String;
	var serverPort: int;
	var serverUsesNAT: boolean;
	
	function Awake() {
		// Set custom proxy server address
		Network.proxyIP = "1.1.1.1";
		Network.proxyPort = 1111;
	
		if (imaserver)
			StartServerWithProxy();
		else
			ConnectToServerWithProxy();
	}
	
	function StartServerWithProxy() {
		Network.useProxy = true;
		Network.InitializeServer(2,25000, false);
	}
	
	function OnServerInitialized(player: NetworkPlayer) {
		if (Network.useProxy)
			Debug.Log ("Successfully started server with proxy support. We are connectable through "
				+ player.ipAddress + ":" + player.port);
	}

function OnFailedToConnect(msg: NetworkConnectionError) { if (Network.useProxy && imaserver) { Debug.LogError("Failed to connect to proxy server: " + msg); } }

function ConnectToServerWithProxy() { Network.useProxy = true; Network.Connect(serverIP, serverPort); }

function OnConnectedToServer() { Debug.Log("Connected successfully to server"); }
using UnityEngine;
using System.Collections;

public class ExampleClass : MonoBehaviour { public bool imaserver; public string serverIP; public int serverPort; public bool serverUsesNAT; void Awake() { Network.proxyIP = "1.1.1.1"; Network.proxyPort = 1111; if (imaserver) StartServerWithProxy(); else ConnectToServerWithProxy(); } void StartServerWithProxy() { Network.useProxy = true; Network.InitializeServer(2, 25000, false); } void OnServerInitialized(NetworkPlayer player) { if (Network.useProxy) Debug.Log("Successfully started server with proxy support. We are connectable through " + player.ipAddress + ":" + player.port); } void OnFailedToConnect(NetworkConnectionError msg) { if (Network.useProxy && imaserver) Debug.LogError("Failed to connect to proxy server: " + msg); } void ConnectToServerWithProxy() { Network.useProxy = true; Network.Connect(serverIP, serverPort); } void OnConnectedToServer() { Debug.Log("Connected successfully to server"); } }