您如何在Unity中的客户端上实例化游戏对象?

时间:2019-08-27 13:48:53

标签: c# unity3d unity3d-unet

我目前正在创建一个两人多人游戏,在尝试从客户端生成游戏对象时偶然发现了一个问题。

在Defender类中,我有一个函数,每次玩家招募一个单位时都会调用该函数。

total = 0
folders = ([name for name in os.listdir(Outer_folder)
            if os.path.isdir(os.path.join(Outer_folder, name))])
for folder in folders:
    contents = os.listdir(os.path.join(Outer_folder, folder))
    total += len(contents)
print(total)

如果我在此RecruitDefender函数中生成单位,则它们的生成就很好,但它们只会在本地生成。为了使它们同时出现在服务器和客户端上,我尝试通过[Command]从播放器类实例化该单元:

 void RecruitDefender(DefenderBlueprint blueprint)
    {
        defender = blueprint.gameObject;   
        Player.instance.CmdSpawnDefender(defender, transform.position, transform.rotation);
    }

但是,这在尝试从客户端派生时给了我错误消息“您要实例化的对象为空”。服务器上的播放器可以生成而不会出现任何问题。该问题似乎源于以下事实:对于Player类中的客户端,游戏对象“ defender”为null,这似乎很奇怪,因为它在RecruitDefender类中具有一个值。据我所知,Unet(我承认是有限的)应该可以将游戏对象传递给[Command]函数。有谁知道这里可能有什么问题?

0 个答案:

没有答案