RPC と Photon PUN について質問があります。
ゲーム内に RPC メソッドを呼び出すゲームオブジェクトが 1 つあります。このゲーム オブジェクトには、C# スクリプト (RPC メソッドを含む) と、観測されたスクリプトを含む/含まない (同じである必要がある) PhotonView コンポーネントが含まれ、ObserveOption は Off に等しくなります。
立方体に向かって撃たなければならないキャラクターがいます。このキューブには、前述のスクリプトとコンポーネントがアタッチされています。
RPC は 1 回送信されます (立方体が発射物と衝突したとき) が、ヒットした立方体のヘルスを減少させる必要があるため、私のシーンにはメッセージを受け取るべき多くの立方体があります。問題は、1 つのキューブのみが RPC 呼び出しを受信することです (RPC は、ゲームの開始時に最初にインスタンス化されたオブジェクトによってキャッチされます) が、RPC はシーン内のすべてのキューブ (そうですか?) によって受信される必要があります。
立方体はまったく同じですが、photonView ID が (当然のことながら) 異なるため、ヘルスを減少させるヒット キューブが正しいものであるかどうかを確認できます。
これは、コードの重要な部分です。
public static void reduceHealthRPC(float damage, int viewID)
{
photonView.RPC("reduceHealth", PhotonTargets.All, damage, viewID);
}
[RPC]
public void reduceHealth(float damage, int viewID)
{
if(this._viewID != viewID)
{
Debug.Log ("The view ID is not mine. My viewID is: " + _viewID + ", and the one which is coming form RPC is: " + viewID);
return;
}
currentHealth -= damage;
Debug.Log("My life is: " + currentHealth);
}
私が間違っていることを理解するのを手伝ってください。ありがとうございました。