問題タブ [unity3d-unet]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
unity3d - Unity3d Unet マルチプレイヤー - サーバー ホストのみがネットワーク対応の建物を配置できます
私はマルチプレイヤーゲームを書いていますが、システムの構築に行き詰まっています-ブロックを配置するコードを作成したことは、ホスト側で完全に正常に動作することを意味します(ホストでこのスクリプトを実行すると、すべてのクライアントのブロックスポーン)が、クライアント側では動作していません (ブロックはローカル クライアントに対してのみ生成され、サーバーや他のクライアントに対してはブロックされません)。私は多くの同様の問題を見てきましたが、今日は答えが見つかりませんでした. 手を貸してくれるかもしれません。これが私のコードです:
PS: ネットワーク認識スクリプトをプレハブに割り当てています。ネットワーク対応のプレハブを作成しており、そのプレハブをネットワーク マネージャーに登録済みのスポーン可能なプレハブとして持っています。
networking - UNET ID Unity 5.4
Unity Multiplayer Networking App に取り組んでいます。クライアントとホストを同じマシンで正常に実行できるようになりました。ただし、あるマシンでホストを実行し、別のマシンのクライアントに接続を試みると、クライアントは接続できません。タイムアウトするまで検索します。
同様の問題に遭遇した人を見つけました。ここで、Unity UNET ID の取得を提案する回答を見つけました。 http://answers.unity3d.com/questions/990419/how-to-use-unity-51-networking-on-multiple-compute.html#answer-1064955
ただし、その回答のリンクは壊れており、Unity 5.4 アプリの UNET ID の取得に関する情報は見つかりません。Unity 5.4 でクロスコンピューター マルチプレイヤー ネットワーキングを成功させた経験のある人はいますか?
unity3d - Unity クライアント権限を持つ子をスポーンする
私は現在、このネットワーク全体が一体となってどのように機能するかを学んでいます。私のコードでは、複数のプレハブから作られた宇宙船を作成しています。
すべては 1 つの から始まりHardpoint
ます。Hardpoint
は、後でループ内でインスタンス化される単一のオブジェクトを保持できます。
(PlayerController
開始点) には、最初のオブジェクトであるコックピットを生成する次のコードがあります。
次は、スクリプトSpawnComponent()
内にあるコードです。Hardpoint
CmdSpawn も次の場所にありHardpoint
ます。
そして最後RollThroughDecompression
に、関数を呼び出すだけDecompress()
です:
そして、情報を除外しないために、次のようにしDecompress()
ます。
申し訳ありませんが、コードが少し乱雑/混乱していますが、最初に生成されたオブジェクトを除いて、新しく生成されたオブジェクトが持たない理由を突き止めようとして、壁を追い上げてきclient authority
ました (おそらく から呼び出されたためPlayerController
)。私は何日もこの問題に悩まされてきました。新しくスポーンされたオブジェクトは、ローカル プレイヤー オブジェクトの子として設定されNetworkServer.SpawnWithClientAuthority
、テスト時にまだスポーンされます。
Trying to send command for object without authority.
呼び出すときCmdSpawn()
。
私が得ている結果:
ご覧のとおり、コックピット (一番最初の部分) が期待どおりに生成されます。しかし、それらに取り付けられた部品はそうでHardpoints
はありません。明確にするために、それEmptyHardpoint
はまさにそれです。子のないハードポイントで、hardpoint
スクリプトとplayercontroller
アタッチされた空のゲーム オブジェクトです。コックピットプレハブにはimg
とも含まれていますhardpoints
c# - UNET - すべてのプレイヤーが同じ NetworkIdentity にコマンドを送信できるようにする
Unity バージョン: 5.5
シーン例:
- Light [Light コンポーネントを持つゲームオブジェクト]
- LightSwitch - [内容: BoxCollider|NetworkIdentity|NetworkBehaviour から継承されたスクリプトで、誰かが BoxCollider をクリックしたときにライトのオン/オフを切り替える]
LightSwitch.cs
どのプレイヤーでもその LightSwitch をクリックして、ライトのオン/オフを切り替えられるようにするにはどうすればよいですか?
編集:例に従って、これは私が構築しなければならなかったコードです:
Player.cs コード:
Unity のおかげで、ライトを切り替えるだけでも大したことはありません。
unity3d - UNET クライアントでの権限
ノンプレイヤー オブジェクトを変更する必要があります。私はそれを行うことができますが、いくつかの理由で警告が表示されます:
私はユニティドキュメントとさまざまな回答を調べましたが、奇妙な部分はそれが機能することですが、警告を防ぎたいです。
まず、ニュートラル オブジェクトを作成する Manager オブジェクトがあります。これはホストで発生します。
その後、各プレイヤーは次のようになります。
ホストは警告をトリガーしません。リモート クライアントのみが警告を受け取ります。多くのクライアントがある場合、エディター コンソールで、クライアントの数だけ印刷されることがわかります。しかし、繰り返しになりますが、実際には機能します。新しいデータがすべてのセッションに伝播されていることがわかりますが、後で何かがダウンすることを期待しています.
c# - Unity WebGL ビルド エラー: ネットワークという名前が現在のコンテキストに存在しません
新しい UNET システムを使用して、Unity3D でマルチプレイヤー WebGL ゲームを構築しようとしています。エディターで完全に実行され、Mac と Windows で完全にビルドされますが、WebGL 用にビルドしようとすると、複数のスクリプトで次のエラーが発生します。
ネットワークという名前は、現在のコンテキストには存在しません
WebGL のエディターでは正常に動作しますが、ビルドしようとするとエラーが表示されます。このドキュメントを読んでいますが、表示されない理由がわかりません。https://docs.unity3d.com/Manual/webgl-networking.html
Unity の最新バージョン 5.5 を使用しています