| | |—| | Note: UNet is deprecated, and will be removed from Unity in the future. A new system is under development. For more information and next steps see this blog post.| Unity のマルチプレイヤー HLAPI システムは、プレイヤーゲームオブジェクトをノンプレイヤーゲームオブジェクトと区別して扱います。新しいプレイヤーがゲームに参加すると (新しいクライアントがサーバーに接続すると)、そのプレイヤーのゲームオブジェクトはそのプレイヤーのクライアント上の「ローカルプレイヤー」ゲームオブジェクトになります。Unity はプレイヤーの接続とプレイヤーのゲームオブジェクトとを関連付けます。Unity は、ゲームをプレイしているそれぞれに 1つのプレイヤーゲームオブジェクトを関連付け、ネットワーキングコマンド を個々のゲームオブジェクトにルーティングします。プレイヤーは他のプレイヤーのゲームオブジェクト上で コマンド を呼び出すことはできません。自身のゲームオブジェクト上でのみ可能です。
NetworkBehaviour クラス (このクラスから派生させてネットワークスクリプトを作成します) には、isLocalPlayer というプロパティがあります。各クライアントのプレイヤーゲームオブジェクトに対し、Unity は NetworkBehaviour スクリプトの isLocalPlayer プロパティを true に設定し、OnStartLocalPlayer() コールバックを呼び出します。つまり、各クライアントにこのようにして設定された異なるゲームオブジェクトがある、ということです。各クライアント上のこの異なるゲームオブジェクトがローカルプレイヤーを表しています。下の図は、2 つのクライアントとそのローカルプレイヤーを示しています。
プレイヤーとしての「自分」を表すプレイヤーゲームオブジェクトだけに isLocalPlayer
フラグが設定されます。通常、このフラグをスクリプトに設定して、入力を処理するかどうか、カメラにこのゲームオブジェクトを追跡させるかどうか、または、他のクライアントに属するプレイヤーにのみ発生する他のクライアント側の処理を行うかどうかを決定します。
プレイヤーゲームオブジェクトは、サーバー上でプレイヤー (すなわち、ゲームをプレイしている人物) を表し、プレイヤーのクライアントからコマンドを実行する能力を持っています。これらのコマンドは、クライアントからサーバーへの保護された リモートプロシージャーコール です。この サーバー権限システム では、サーバー側の他のノンプレイヤーゲームオブジェクトは、クライアント側のゲームオブジェクトから直接コマンドを受け取ることができません。これは、セキュリティのためと、ゲーム構築の複雑さを軽減するためです。ユーザーが入力したコマンドをプレイヤーゲームオブジェクトを通してルーティングすることにより、これらのメッセージが適切な場所、適切なクライアントから受信されていることを確認し、中央にあるサーバーで処理することができます。
Network Manager は、クライアントがサーバーに接続するたびにプレイヤーを追加します。ただし、場合によっては、ユーザーがコントローラーの「開始」ボタンを押すなどの入力イベントが発生するまで、プレイヤーを追加したくないことがあります。自動的なプレイヤーの作成を無効にするには、Network Manager コンポーネントのインスペクターに移動し、Auto Create Player を無効にします。
Did you find this page useful? Please give it a rating:
Thanks for rating this page!
What kind of problem would you like to report?
Thanks for letting us know! This page has been marked for review based on your feedback.
If you have time, you can provide more information to help us fix the problem faster.
Provide more information
You've told us this page needs code samples. If you'd like to help us further, you could provide a code sample, or tell us about what kind of code sample you'd like to see:
You've told us there are code samples on this page which don't work. If you know how to fix it, or have something better we could use instead, please let us know:
You've told us there is information missing from this page. Please tell us more about what's missing:
You've told us there is incorrect information on this page. If you know what we should change to make it correct, please tell us:
You've told us this page has unclear or confusing information. Please tell us more about what you found unclear or confusing, or let us know how we could make it clearer:
You've told us there is a spelling or grammar error on this page. Please tell us what's wrong:
You've told us this page has a problem. Please tell us more about what's wrong:
Thank you for helping to make the Unity documentation better!
Your feedback has been submitted as a ticket for our documentation team to review.
We are not able to reply to every ticket submitted.