繁体   English   中英

unity Photon PUN RPC 调用

[英]Unity Photon PUN RPC call

我有一个关于 RPC 和 Photon PUN 的问题。

我的游戏中有 1 个调用 RPC 方法的 GameObject。 这个游戏对象包含一个 C# 脚本(包含 RPC 方法)和带有/不带(应该是相同的)观察脚本的 PhotonView 组件,并且 ObserveOption 等于 Off。

我有一个角色必须射击到一个立方体。 此多维数据集具有先前描述的脚本和附加到其的组件。

RPC 发送一次(当立方体与射弹碰撞时),但在我的场景中,我有许多 Cube 应该接收消息,因为我必须降低命中立方体的健康状况。 问题是只有 1 个 Cube 接收到 RPC 调用(RPC 在游戏开始时被第一个实例化的对象捕获),但是我的场景中的所有立方体都应该接收到 RPC(对吗?)。

立方体完全相同,但它们具有不同的光子视图 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);
}

请帮助我了解我做错了什么。 谢谢你。

如果您需要为所有多维数据集调用 RPC,请为每个多维数据集执行此操作。 目前,您只为静态“photonView”变量引用的对象调用 RPC。 根据它的初始化方式,RPC 在该对象上调用。

我可能会迟到,但请尝试PhotonTargets.AllBuffered ,这将使 RPC 调用在稍后加入的玩家上运行。

可能会超级晚,但你试过这个吗? cube.cs附加到所有多维数据集。 main.cs

cube[] allCubes = FindObjectsOfType<cube>();

for (int x = 0; x < allCubes.length; x++)
allCubes[x].reduceHealthRPC(dam,id);

这会将代码发送到具有一个目标 id 的所有多维数据集,如果这是您的目标,但您最好只对单个多维数据集进行 rpc。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM