使用回调
回调(Callback
)是设置为函数对象的只写成员。开发者无法直接调用回调,而是需要 迷你世界 Studio
对回调函数进行内部触发,并向其传递回调处理程序或函数所需的相关信息。
常用重要回调
- Close: 在游戏关闭之前触发,以便为脚本提供保存数据的机会。
- RemoteFunction.OnClientInvoke: 当服务器调用
RemoteFunction:FireClient(player, …)
或RemoteFunction:FireAllClients(…)
时被调用。 - RemoteFunction.OnServerInvoke: 当客户端调用
RemoteFunction:InvokeServer(…)
时被调用。 - BindableFunction.OnInvoke: 当脚本调用
BindableFunction:Invoke(…)
时被调用。
回调用法
在设置回调时,开发者需要将其分配给指定函数:
local CustomNotify = SandboxNode.New("CustomNotify")
--监听事件
CustomNotify.Notify:Connect(function(v1, v2)
print("TestNotify->"..v1.." "..v2)
--TestNotify->100 hello
end)
由于回调拥有只写属性,开发者将无法获取回调的值。
local CustomNotify = SandboxNode.New("CustomNotify")
--监听事件
CustomNotify.Notify:Connect(function(v1, v2)
print("TestNotify->"..v1.." "..v2)
--TestNotify->100 hello
end)
--发送自定义事件
CustomNotify:Fire(100,"hello")
回调示例
在本示例中,我们将会创建一个 CustomNotify
,并将其绑定至接收创建矩形 LocalPosition
和 GeoSolidShape
的函数。此 CustomNotify
将会创建部件并将其放入 Workspace
(工作区),并将传递给接收函数的部件名称与尺寸应用至新创建的部件。
首先,让我们来创建 BindableFunction
:
local CustomNotify = SandboxNode.New("CustomNotify")
然后使用 OnInvoke
回调将其与函数相连:
CustomNotify.Notify:Connect(function(LocalPos, GeoSolidShape)
local cube = SandboxNode.New("GeoSolid")
cube.LocalPosition = LocalPos
cube.GeoSolidShape = GeoSolidShape
cube.Parent = game.WorkSpace
end)
设置完毕后,开发者将可以按照下列方式调用 BindableFunction
,并使用其创建新的部件:
CustomNotify:Fire(Vector3.New(0,0,0),Enum.GeoSolidShape.Cuboid)