3

Network Identity と Network Transform を持つプレーヤー オブジェクトがあります。NetworkManager を持つオブジェクトでもあります。2台のPCを接続した場合。両選手の動きが見える。それは結構です。しかし、私のゲームには 2 つのボールがあります。緑と赤が1つずつ。

ボールの色を変更するコードは次のとおりです。

public Material Right = null;
     public Material Left = null;

      void OnCollisionEnter(Collision collider)
          { 
       if (collider.gameObject.name == "_RightBall")
             {  randomnumb = UnityEngine.Random.Range(0, 11);
                      if (randomnumb >= 5)
                      {
                          Right.color = Color.red;  
                     }
                      else
                      {
                          Right.color = Color.green;               
                     }
             }
       }

プレーヤーがボールを打つと、色が変わります。両方のプレーヤーに問題なく機能します。しかし、プレーヤーがボールの色を変えると、それは自分自身のために変わります。他のプレイヤー向けではありません。プレーヤーがボールの色を変えたときに、すべてのプレーヤーが同じ色に見えるようにしたい。ネットワーク ID を追加しようとして、「ローカル プレーヤー権限」を自分のボールにチェックしました。しかし、うまくいきませんでした。

4

1 に答える 1

1

オールドウェイ

RPC関数は、あなたが話していることに対して完全に機能します。経由で複数の var を送信できますRPC。変数名は送信しませんが、その値を送信します。

var ballcolor : int = 2;  

ballcolor を送信する場合は、番号 2 を送信しています。

var ballcolor : int = 0;
@RPC
function WhatIsTheStatusOfBall( incomingBallColor : int){
   ballcolor = incomingBallColor;
}  

現在、ボールカラーは 2 です。

次のような複数のものを渡すことができます

@RPC
function WhatIsTheStatusOfBall(BallLocation : Vector3, BallAngle : float, incTraveSpeed : float){  

その後、これらの var をローカルで使用できます。

ここに、それを使用する方法に関するいくつかの詳細情報があります。http://unity3d.com/support/documentation/Components/net-RPCDetails.html


あなたのコメントに応えて:

新しい方法

[Command][ClientRpc]これは、新しい Networking システムでも同等です。クライアントからサーバーまで、サーバーからすべてのクライアントまで
可能です。http://docs.unity3d.com/Manual/UNetActions.html[Command][ClientRpc]

さらに、 の の機能を使用して、個々のクライアントにメッセージを送信できSend()ます。http://docs.unity3d.com/ScriptReference/Networking.NetworkConnection.Send.htmlconnectionToClientNetworkBehaviour

于 2015-11-15T05:49:34.473 に答える