問題タブ [unity-networking]
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 - RigidBody で NetworkTransform を使用する場合の NullReferenceException
NetworkServer.Spawn を使用して Rigidbody と NetworkTransform を Sync Rigidbody 3D に設定したオブジェクトを作成しようとすると、次のようになります。
NullReferenceException: オブジェクト参照がオブジェクト UnityEngine.Networking.NetworkTransform.SerializeMode3D (UnityEngine.Networking.NetworkWriter ライター) のインスタンスに設定されていません (C:/buildslave/unity/build/Extensions/Networking/Runtime/NetworkTransform.cs:251)
unity3d - スポーンされたプレイヤーがサーバーと通信できません
すべてを接続するためにローカルの WAMP サーバーを使用しています。サーバーを起動してからクライアントに接続しても、エラーは発生しません。プレイヤーがスポーンするまではすべて問題なく動作しているようで、「SpawnObject for SkeletonPlayer(Clone) (UnityEngine.GameObject), NetworkServer is not active. Cannot spawn objects without a active server.」と表示されます。何が起こっているかについてのアイデアはありますか?
unity3d - UNet クライアント データ エラー: MessageToLong
マニュアルに従って NetworkServer.SendToAll を介してサーバーから多くの基本的なネットワーク メッセージを送信しています。これらの特定のスループット レートに達すると、クライアントはMessageToLong
(sic) in でエラーを出し始めますUNetStaticUpdate
。これは、サイズではなく数のみが変化するため、メッセージが長すぎるという問題ではありません (考えられるように)。
追いつけないバッファリングメカニズムが舞台裏で起こっていると思いますか?
c# - 両方のプレイヤーが gameObject と対話し、ホストとクライアントで変更が同期される UNET マルチプレイヤー ゲーム
簡単なデモを作成したい。平面の真ん中に、クリックすると色が変わる立方体が欲しいです。(これは簡単に実装できました) キューブを交互にクリックする 2 人のプレイヤーが必要です。自分の番になるとキューブの色が変わります。キューブの色が変わると、両方のプレイヤーの画面に変更が反映されます。私は UNET の例、http://forum.unity3d.com/threads/unet-sample-projects.331978/ を見てきましたが、それらのほとんどには、キーボードで制御するネットワーク化されたキャラクターがあり、この側面があります。私を捨てています。プレイヤーを 2 つ作成する必要がありますが、非表示にして制御スクリプトを持たないようにするだけですか? ブロックをプレハブにする必要がありますか? 私のブロックのスクリプトは次のとおりです。
また、私のブロックは現在プレハブではないことに注意してください。Network Identity コンポーネントと、ネットワーク トランスフォーム -> Sync トランスフォームを有効にしました。サーバー ホストを起動すると、ブロックの色を変更できますが、クライアントはこれらの変更を表示できません。クライアントがブロックをクリックしても、次のエラー メッセージ以外は何も起こりません:権限のないオブジェクトにコマンドを送信しようとしています。
どんな助けでも大歓迎です!ありがとう http://docs.unity3d.com/Manual/UNetSetup.html
unity3d - ネットワーク回転同期
Unity のバージョンは 5.2.3f1 です。子ゲーム オブジェクトの回転を同期しようとしています。ローカルでは問題なく動作しますが、他のクライアントには表示されません。私は見つけることができるすべてを試しましたが、何もしませんでした。
この理由は、FPS ボディを回転させるためです。そのため、Spine2 を回転させようとしています (カメラを回転させることは私の最善の解決策ではありません)。私は Mixamo キャラクターを使用してテストしています。最終的には、Mixamo の自動リグ キャラクターを使用するので、ここで作成したものはすべて互換性があります。
Network Transform Rigidbody 3D を使用しようとしましたが、Spine2 ではなくキャラクター自体のみが同期されました。Network Transform Child と公式のスケルトン同期を試しました。
スクリプトの部分で、私は多くのことを試しましたが、最も有望なものはこれでした:
YouTube の UNET チュートリアル シリーズ、Gamer To Game Developer ユーザーからのものです。
Spine2に付けても動かないのですが、主人公に付けたら動きました。
これも試しました:
しかし、それはUnityの古いバージョン用だったと思います。
回転させるには、A Free Simple Smooth Mouselookを使用しています
私はそれを編集しました、この行:
基本的に、Vector3.right を Vector3.forward に変更し、マウスの右ボタンが押されていない場合のみ Vector3.right を変換しました。スクリプトは Spine2 にアタッチされ、開始時にスクリプトによって if(isLocalPlayer) がアクティブ化されます。
現在の階層の写真があります:
(一部のカメラはテスト専用です。メイン カメラは、標準アセットから抽出された FirstPersonCamera です)
Spine2 の回転をデバッグ ログに記録すると、0 から 1 までの値しか得られないことに気付きました。
unity3d - Unity3D HLAPI ネットワーキングのシングル プレイヤー オーバーヘッド
Unity3D エンジンの高レベル ネットワーク API (HLAPI) を使用することは、全か無かのアプローチのようです。マルチプレイヤーでの使用が予想されるゲーム オブジェクトでは、(ほとんどの) 動作を として実装する必要がありNetworkBehaviour
、ネットワーク コンポーネントが必要です。さらに、すべてのシーンで Network Manager が必要です。すべてのシングルプレイヤー アセットのネットワーク対応バージョンを複製することは避けたいと思います。シングル プレイヤー ゲームは、単一の (localhost) のみを使用して LAN ホストベースのネットワーク ゲームとして実現されることが予想されるようです。クライアント。
私の懸念は、絶対にすべての上に乗っている HLAPI が、ゲームの主な焦点であるシングルプレイヤー モードでかなりのオーバーヘッドをもたらすことです。これは正当な懸念事項ですか?
私はいくつかの緩和手法を検討しましたが、保守性とコードの複雑さに関して独自の問題を引き起こします。
- 両方のモードで必要なプレハブが複製されます (DRY に違反: 1 つのプレハブへの変更は、手動で別のプレハブにミラーリングする必要があります)。
- シングルプレイヤー アセットをマルチプレイヤー アセットに動的に変更または置換する、またはその逆 (複雑でエラーが発生しやすい)
より良い緩和技術は何ですか? それとも必要ですか?
c# - Unity Networking: マルチプレイヤーでスプライトを反転してもホストが反転しない
私は小さなマルチプレイヤー 2D プラットフォーマー ゲームに取り組んでいます。ネットワーク全体でアニメーション、動き、反転スプライトを複製することができましたが、理解できないバグがあります。スプライトをフリップするためのコードは、ホストにとって完璧に機能します。彼は、他のプレイヤーが左または右に曲がるときにサイドが切り替わるのを見ることができますが、他の誰もがホストのフリップを見ることはできません。また、3 番目のプレーヤーは 2 番目のプレーヤーのターンなどを見ることができません。何かが正しくないので、誰かが私のコードを見てくれれば幸いです。
メインPlayerスクリプトのコード:
プレーヤーで追加のPlayer_SyncPositionスクリプトをコーディングします。
編集:
プレーヤー
Player_SyncPosition
c# - Network Lobby Manager Unity3D の異なるプレハブ
各クライアントがロビーでプレーヤーのプレハブを選択できるようにし、ゲームの開始時に、選択したプレハブをクライアント用にインスタンス化したいと考えています。LobbyManager で変数を定義しましたが、機能しません。いつも同じホストです。どうすればこれを解決できますか?
これが私のコードです: