我有一个射击子弹的玩家,但是当射击的玩家是主持人时,子弹只会被发送给所有客户。
使用 Unity 5.6
到目前为止我所拥有的......
答案 0 :(得分:2)
在Unet中,
在Unet中,服务器生成对象,仅此而已。故事结束。
“玩家”对象实际上不是坦克或任何东西,这是完全正常的-它可以是每个客户都有一个的空游戏对象(通常称为“抽象玩家对象”)。
使用客户权限生成对象非常容易。只需转到doco页面Manual / UNetSpawning.html并向下滚动到 代码(CSharp):
NetworkServer.SpawnWithClientAuthority(treeGo, conn);
在那里解释了(真的就是所有的一切)。
在上面的代码行中,人们经常问您怎么知道要使用哪个“ conn” NetworkConnection
?
当然,在X真正加入游戏之前,这是没有意义的!见第二点!
所以您可能会做这样的事情...
示例1-您的“母职”只有一个特定的客户。当然,服务器显然必须知道该客户端的
NetworkConnection
。您将其保存在变量networkConnectionToMothership
中。因此,在此示例中,您可以使用“ conn”。
或
示例2-客户端(例如,客户端JohnSmith)想要生成JohnSmith将对其拥有权限的对象。客户端(JohnSmith)非常简单地要求服务器生成对象。 “询问服务器”仅表示发送
Command
。
在任何“命令”(即在服务器上运行)中,您实际上具有属性connectionToClient
,该属性为您提供了所需的“ conn”!
这就是协议。
对于这个特定的问题,在您的代码中您正在呼叫NetworkServer.spawn
。
您应该打电话
NetworkServer.SpawnWithClientAuthority(treeGo, conn);
(在此doco页面上搜索该内容:Manual / UNetSpawning.html)
在上面的示例(2)中,我已经解释了如何知道要使用的“ conn”。