我目前正在创建一个两人多人游戏,在尝试从客户端生成游戏对象时偶然发现了一个问题。
在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]函数。有谁知道这里可能有什么问题?