我无法通过远程事件传递模型
模型(塔)最初存储在复制存储中,然后被克隆并移动到工作区(本地脚本)中的文件夹
tower = game.ReplicatedStorage.Towers.Boxer:Clone()
tower.Parent = workspace.Map.TowersToPlace
然后我将其传递通过远程事件。
print(tower) replicatedStorage.SpawnTowerEvent:FireServer(tower, mouse.Hit.Position)
end)
打印行正确打印了塔,但服务器脚本错误地指出塔变量为零(服务器脚本)
game.ReplicatedStorage.SpawnTowerEvent.OnServerEvent:Connect(function(plr, towerToPlace, pos)
print(towerToPlace)
end)
-- 返回 nil
任何人都知道为什么变量没有被传递,尽管在本地脚本中正确定义了它。
需要记住的是,在 LocalScripts 中创建的对象仅存在于客户端上并且不会被复制,而脚本在服务器上执行。
因此,当您使用 RemoteEvent 传递模型引用时,服务器不知道您在说什么,因为在它看来您引用的是一个不存在的对象。根据有关RemoteEvent 参数限制的文档:
这就是您
nil
在尝试打印它时看到的结果。因此,除非在客户端创建东西是一个特定的设计决策,否则构建代码的更好方法是让服务器为您创建塔,而您的 LocalScript 只需告诉服务器在哪里创建哪个塔。
因此在您的 LocalScript 中:
然后你的脚本会找到客户正在谈论哪个塔并创建它: