我有一个
Tween
服务,可以在两个部分之间移动相机。然而,使用诸如 game.Workspace.cameras.spawnselection.default_camera
之类的直接调用来获取零件会失败。
这是我的代码:
--Local Script
local TweenService=game:GetService("TweenService")
local camera=game.Workspace.Camera
local cameras=game.Workspace:WaitForChild("cameras")
local play=script.Parent["main menu"]["main frame"].PlayButton
--Camera Locations
local starting_camera=cameras:WaitForChild("spawnselection"):WaitForChild("default camera")
local hillcrest_camera=cameras.spawnselection:WaitForChild(""):WaitForChild("Hillcrest")
local function createtween(end_:CFrame,time_:number)
local cutscene=TweenService:Create(camera,TweenInfo.new(time_),{CFrame=end_})
return cutscene
end
play.Activated:Connect(function()
camera.CameraType=Enum.CameraType.Scriptable
local selection
local canswitch=true
local cutscene=createtween(hillcrest_camera.CFrame,10)
if canswitch then
camera.CFrame=starting_camera.CFrame
cutscene:Play()
canswitch=false
end
cutscene.Completed:Connect(function()
canswitch=true
end)
end)
我尝试使用“:WaitForChild”方法,但这显然不起作用,因为警告:
Infinite yield possible on 'Workspace.cameras.spawnselection:WaitForChild("default camera")
。我原以为这会在第一次尝试时起作用。然后,我运行一个服务器脚本来获取零件的 Parents
,这返回了正确的值,并且本地脚本运行了一次。然而,仅改变部件的透明度就破坏了LocalScript
。这些对象在运行时显示在资源管理器中,我确信我正在访问正确的对象,因为我可以通过服务器脚本查看它们。本地脚本无法访问其自己的工作区副本吗?编辑:这是我的
地点。有问题的文件位于 StarterGUI
中,LocalScripts
' 名称为 SpawnSelection.
spawnselection
产量Workspace.cameras.spawnselection
工作区中不存在,脚本也不会创建它,因此屈服于它总是会导致无限的屈服,从而产生错误。
我删除了所有对
Workspace.cameras.spawnselection
的引用,并将其替换为 Workspace.cameras
,这是一个有效的位置。我选择这个是因为有些情况下:WaitForChild()
。
更正后的版本是这样的,但仍然有错误:
local starting_camera=cameras:WaitForChild("default camera")
local hillcrest_camera=cameras:WaitForChild("Hillcrest")
default camera
产量下一个错误是
default camera
。工作区中没有名为 default camera
或 default_camera
的实例,也没有脚本创建它,因此,像以前一样,屈服于它会导致无限的屈服错误。
我注意到
start_camera
中有一个名为 Workspace.cameras
的部分,根据变量名称,这可能就是您想要使用的部分。
local starting_camera=cameras:WaitForChild("start_camera")
我注意到 Instance Streaming 的另一个问题导致脚本使用的部分被流出来。它们是对此的两个修复。
StreamingMinRadius
内,以便它们始终处于加载状态Workspace.StreamingEnabled
设置为 false
您的脚本指定了不正确的零件位置,并且零件正在流出。这些导致了您将遇到的错误。
您最终的固定脚本将是这样的:
--Local Script
local TweenService=game:GetService("TweenService")
local camera=game.Workspace.Camera
local cameras=game.Workspace:WaitForChild("cameras")
local play=script.Parent["main menu"]["main frame"].PlayButton
--Camera Locations
local starting_camera=cameras:WaitForChild("start_camera")
local hillcrest_camera=cameras:WaitForChild("Hillcrest")
local function createtween(end_:CFrame,time_:number)
local cutscene=TweenService:Create(camera,TweenInfo.new(time_),{CFrame=end_})
return cutscene
end
play.Activated:Connect(function()
camera.CameraType=Enum.CameraType.Scriptable
local selection
local canswitch=true
local cutscene=createtween(hillcrest_camera.CFrame,10)
if canswitch then
camera.CFrame=starting_camera.CFrame
cutscene:Play()
canswitch=false
end
cutscene.Completed:Connect(function()
canswitch=true
end)
end)
如果您仍然遇到问题,请务必参阅实例流部分,以确保您的部件已正确加载。