问题是在服务器上,我创建一个obj,然后spwan它,但是在客户端我怎么知道对象何时被Spwaned,我想知道是否有spwan回调函数,我很抱歉我的英文在此先感谢您的帮助!
答案 0 :(得分:1)
这可能是您正在寻找的: Custom Spawning callbacks
每当您使用它时,您现在负责在所有客户端上实例化新对象,您可以使用简单的Instantiate()来实现,就像给出的示例一样。
然而,有两点需要注意:答案 1 :(得分:0)
我不知道你是否可以直接获得对spawn函数客户端的回调,但你可以将继承NetworkBehaviour的脚本附加到生成的对象,并在脚本中添加:
public class MySpawnedObject : NetworkBehaviour
{
void Awake()
{
if (!isServer)
//do what you want with your client
}
}
但是不要忘记,如果当前可执行文件是主机,则isServer返回true,而UNET认为主机是服务器和客户端,您也可以使用将触发主机和客户端的isClient。
if (isClient)
答案 2 :(得分:0)
我不知道有任何直接的方法知道该玩家已经在服务器上生成了但是您可以在实例化您的播放器时从服务器上触发可以在每个客户端上运行的事件。因此,您可以使用ClientRPC属性
ClientRpc - 在服务器上调用[ ClientRpc ]属性 在当前连接到的所有客户端上执行 给定对象的服务器。 [ ClientRpc ]最常用于通知 游戏的客户变化就像分数的变化或者他们拥有的变化 死了(在所有玩家和屏幕上播放声音和死亡动画)。
喜欢附加到本地播放器的这个脚本
public class MyLocalPlayer: NetworkBehaviour
{
int counter;
[ClientRpc]
public void PlayerSpawned(int extra)
{
Debug.Log("a player has spawned");
}
}