【发布时间】: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() 的调用。