蓝图通信
了解如何在 Lua 和蓝图之间进行通信。
在 nanos world 中,你可以发送并订阅蓝图事件! 在本指南中,你将学习如何在蓝图和 Lua 中创建并绑定事件!
信息
所有通信仅在客户端可行! 因为服务器无法感知虚幻引擎。
蓝图事件
你可以在蓝图中创建事件(或函数),以便从 Lua 中调用它们。
创建自定义事件
打开或创建你的蓝图,进入 Event Graph(事件图表)标签页,在图表中右键单击以打开上下文操作菜单,在其中输入 Add Custom Event... 来找到该选项:

提示
你也可以创建函数来代替事件供 Lua 调用!
然后,选中你新创建的自定义事件,在 Details 面板(通常在右侧)中,你可以点击 + 为其添加新的输入,你可以添加任意数量的输入:

创建工作到此结束! 从现在开始,你可以添加任何你想要的逻辑了!
从 Lua 调用自定义事件
在 Lua 中,你可以像往常一样生成你的蓝图,并在其上调用 CallBlueprintEvent 来触发该蓝图事件。
Client/Index.lua
-- 生成蓝图
local blueprint = Blueprint(Vector(), Rotator(), "my-asset-pack::BP_AwesomeBlueprint")
local param1 = true -- 布尔值参数
local param2 = 123 -- 整型参数
local param3 = "你好呀!" -- 字符串参数
-- 调用事件并传递参数
blueprint:CallBlueprintEvent("MyBlueprintCustomEvent", param1, param2, param3)
蓝图事件分发器
事件分发器(Event Dispatchers)是在蓝图内部创建的事件,其他蓝图(或者在我们的案例中是 Lua)可以订阅它,从而在蓝图触发该事件时获得通知。
创建事件分发器
要创建它,请在左侧找到 Event Dispatchers 栏目,然后点击 + 创建一个新分发器,并将其命名为你想取的名称:

接着选中它,在 Details 面板中,你可以根据需要添加任意数量的输入/参数:

从蓝图调用分发器
现在,要在蓝图中触发它,将其从列表中拖拽到图表中,并选择 Call(调用)选项:

然后你可以接入任何逻辑来触发它,任何绑定了该分发器的其他蓝图或 Lua 都会被触发!

从 Lua 绑定分发器
你可以直接在 Lua 中绑定蓝图事件分发器! 为此,生成你的蓝图,并在其上调用 BindBlueprintEventDispatcher() 来绑定该分发器:
Client/Index.lua
-- 生成蓝图
local blueprint = Blueprint(Vector(), Rotator(), "my-asset-pack::BP_AwesomeBlueprint")
-- 订阅蓝图事件分发器
blueprint:BindBlueprintEventDispatcher("GorgeousDispatcher", function(self, arg1, arg2)
-- arg1 是字符串,arg2 是整数
Console.Log("从蓝图调用!", arg1, arg2)
end)