引用具有网络标识 Unity UNET 的 object 的 child objects?

Referencing child objects of an object with a network identity Unity UNET?

所以我有一个 object,我正试图通过 UNET 进行操作。我所做的基本上是在服务器上生成一个 object,然后执行光线投射,如果光线投射返回并且我击中了生成的 object 的 child,那么我想要更改它的 material。有点像高光效果。我可以恢复 child object 并且它一直在工作,直到我使用 Rpc 调用它。我收到一条警告,内容如下:

Network Writer myChildObject has no Network Identity

然后它继续给我一个 Null 引用错误。 在考虑之后,我认为它给我这个错误是因为 object 不能在没有网络 ID 的情况下发送给其他客户端,但是它的 parent 已经有一个并且我如果它的 parent 有一个就不能给它一个... 是否有解决这种疯狂的方法,或者我做这一切都是错误的?

我的PlayerController上的代码块如下:

[Command]
void CmdHighlight()
{
    //get what the user hit and then if we hit something send it over the server to be highlighted
    GameObject hitObject = ControllerUNET.CheckForHitObject();
    if(hitObject != null)
        RpcHighlight(hitObject);
}

[ClientRpc]
void RpcHighlight(GameObject hitObject)
{
  //highlight the object over the server
  //Throws null reference on game object on line below
  ControllerUNET.HighlightHitObject(hitObject);

}

嗯,经过更多的研究和测试,我发现我最初的结论是正确的。您不能通过服务器发送游戏对象,并且 Unity 也不支持已有对象的子对象的网络 ID。相反,我在父级上创建了一个子级列表,然后当我得到命中对象时,我在列表中找到它的索引并将其发送到服务器上,客户端使用它来获取对被命中对象的引用。