问题是,在服务器上,我创建了一个obj,并将其spwan,但在客户端,我如何知道对象何时被Spwaned,我想知道是否有spwan回调函数,我很抱歉我的英语。提前感谢您的帮助!
发布于 2017-10-25 15:41:08
这可能就是你要找的:Custom Spawning callbacks
无论何时使用它,您现在都要负责在所有客户机上实例化新对象,您可以使用一个简单的Instantiate()来实现,就像给出的示例一样。
然而,有两个重要的警告:
由于某种原因,派生回调永远不会在主机上被调用,所以如果你在回调中为对象做任何初始化,请注意,在主机上调用
发布于 2017-06-08 21:31:36
我不知道您是否可以直接回调到派生函数客户端,但您可以将继承NetworkBehaviour的脚本附加到派生的对象,并在脚本中添加以下内容:
public class MySpawnedObject : NetworkBehaviour
{
void Awake()
{
if (!isServer)
//do what you want with your client
}
}但是不要忘记,如果当前的可执行文件是主机,那么isServer将返回true,而UNET将主机视为服务器和客户端,您也可以使用将为主机和客户端触发的isClient。
if (isClient)发布于 2017-08-24 19:12:54
我不知道有什么直接的方法可以知道player是在服务器上产生的,但你可以从服务器上触发一个事件,当你实例化你的player时,这个事件可以在每个客户端上运行。因此,您可以使用ClientRPC属性
ClientRpc-在服务器上调用ClientRpc属性,并在当前连接到给定对象的服务器的所有客户端上执行该属性。ClientRpc最常用于通知客户端游戏的变化,如分数的变化或他们已经死亡(在所有玩家的屏幕上播放声音和死亡动画)。
就像这个附加到本地播放器上的脚本
public class MyLocalPlayer: NetworkBehaviour
{
int counter;
[ClientRpc]
public void PlayerSpawned(int extra)
{
Debug.Log("a player has spawned");
}
}https://stackoverflow.com/questions/44430540
复制相似问题