Unity MLAPI ServerRPC 没有被调用
Posted
技术标签:
【中文标题】Unity MLAPI ServerRPC 没有被调用【英文标题】:Unity MLAPI ServerRPC not getting called 【发布时间】:2021-04-13 05:19:41 【问题描述】:我正在实现一个系统,玩家可以在该系统中从游戏世界中拾取物品。捡起物品后,我想销毁游戏对象。为此,我想我会创建一个删除对象的 ServerRPC,但没有调用 ServerRPC。我也尝试制作一个 ClientRPC,但也没有调用它。我注意到只有当游戏的主人试图拿起物品时才会调用它——关于如何解决这个问题的任何想法? documentation 非常简单,但如果我遗漏了什么,请告诉我。这是我的代码:
public override void Interact(GameObject player)
player.GetComponent<PlayerInventory>().AddItem(this.item);
Debug.Log("before");
TestClientRpc();
TestServerRpc();
[ServerRpc]
public void TestServerRpc()
Debug.Log("server");
// Destroy(gameObject);
[ClientRpc]
public void TestClientRpc()
Debug.Log("client");
// Destroy(gameObject);
编辑:image of the components on the weapon
编辑:这个类扩展了一个扩展 networkbehaviour 类的类。对象一开始只是坐在场景中——它们没有被生成/实例化(不确定这是否重要)。
【问题讨论】:
通过dispose方法将游戏对象放入类对象中。因此,创建一个继承基类 GameObject 的类 MyGameObject。然后在 MyGameObject 中添加一个 dispose 方法。 主要问题是 RPC 没有被调用——我认为在这里实现一个 dispose 方法对我没有帮助 @jdweng 你根本不应该从GameObject
继承......以及Dispose
方法对这里有什么帮助?
您能否添加您的课程的其余部分,也许还可以向我们展示您的设置如何......哪些组件附加到该对象等
类 Dispose() 方法会销毁类中的所有对象。您可以在 dispose 方法中添加对 Destroy() 的调用。
【参考方案1】:
这个问题最合理的解决方案,要么是在前面的一些行中遇到错误,要么正如其他人指出的那样, requireOwnership 没有设置为 false 。 对于 MLAPI 的深入分析,https://youtube.com/channel/UCBStHvqSDEF751f0CWd3-Pg 我发现这个频道上的教程系列最好
【讨论】:
【参考方案2】:我也有同样的问题。看了 2 天,但老实说,我倾向于认为这是一个错误。
【讨论】:
该死...好吧,如果您找到解决方法或其他什么,请告诉我:/【参考方案3】:我需要将以下属性添加到我的 ServerRpc:
[ServerRpc(RequireOwnership = false)]
因为玩家不是该物品的所有者。
【讨论】:
【参考方案4】:我只是花了 4 个多小时把头撞在墙上,因为他们没有在文档中写下这些重要信息。从不拥有网络对象的客户端调用 ServerRpc 时,应将 RPC 属性设置为 RequireOwnership = false。
【讨论】:
以上是关于Unity MLAPI ServerRPC 没有被调用的主要内容,如果未能解决你的问题,请参考以下文章
python 一个lambda函数,它将EC2标记复制到所有相关的卷和网络接口。可以在我的网站http:// mlapi上找到完整的文章
python 一个lambda函数,它将EC2标记复制到所有相关的卷和网络接口。可以在我的网站http:// mlapi上找到完整的文章