2 月:控件与通知!
控件与通知!

以下是 2 月最新更新的汇总。
控件
经过漫长的期待和大量请求,我们很高兴地宣布 nanos world 引入了一个新类:Widget!这个新类允许我们从 Lua 生成 UserWidgets 或任何 Widget 子类,作为游戏中的 UI 使用,类似于 WebUI。
就像蓝图一样,可以从 Lua 调用函数并监听调度器,从而实现两种环境之间的无缝集成。
看看创建一个原生按钮并订阅其事件有多么简单:
local my_button = Widget(NativeWidget.Button)
-- 在其中放入文本
local my_text = Widget(NativeWidget.Text)
my_text:CallBlueprintEvent("SetText", "按我!")
my_button:AddChild(my_text)
-- 绑定原生 OnClicked 调度器
my_button:BindBlueprintEventDispatcher("OnClicked", function()
Console.Log("已点击!")
end)
-- 将按钮添加到视口
my_button:AddToViewport()
-- 调整布局,使其居中
my_button:SetCanvasLayout(Vector2D(0, 0), Vector2D(0, 0), Vector2D(0.5, 0.5), Vector2D(0.5, 0.5), Vector2D(0.5, 0.5))
Widget 的所有原生函数都可以通过 CallBlueprintEvent() 调用。就像事件/调度器也可以通过 BindBlueprintEventDispatcher() 订阅一样!在控件页面中,我们添加了一个章节,链接了所有 虚幻原生 Widget 文档页面,你可以在那里找到它们所有可用的方法和事件!
除了可以生成原生 Widget 外,你还可以从资产包中生成自定义 UserWidget!只需使用另一个构造函数:
local my_custom_widget = Widget("my-asset-pack::WBP_CustomWidget")
我们计划继续扩展 Widget 的功能,并在未来使其能够在 3D 世界中绘制。
现在构建 UI 简直起飞了!
更好的警告

我们改进了警告系统,为弃用警告添加了行号。这使开发者更容易识别和修复脚本中的弃用代码。
SceneCapture 编码
我们为 SceneCapture 添加了一个新方法:EncodeToBase64()!
这项新的 SceneCapture 编码功能允许你拍摄快照并生成 Base64 图像字符串,用于 WebUI。我们提供同步和异步两种方法。
聊天中的玩家头像
我们在聊天中添加了玩家头像,使识别谁在说话变得更加容易。
新的原生服务器命令
我们添加了新的服务器命令,包括踢出玩家和列出已连接玩家的功能:
players- 列出所有已连接的玩家。kick- 将玩家从服务器中踢出。
CharacterSimple 可受伤
我们为 CharacterSimple 添加了受伤和死亡的支持,就像现有的 Character 类一样。
此外,我们还为 BaseDamageable 添加了新的文档页面,包含所有 Damageable 的方法和事件!它在 Character 和 CharacterSimple 之间共享!
新的自定义设置类型:选择
我们添加了一种新的自定义设置类型:选择。这个新选项在主菜单中显示为下拉菜单,允许玩家在游戏模式 Package.toml 的 custom_settings 设置中选择一个预定义选项。

致命崩溃报告
我们现在会自动将所有致命错误发送到我们的崩溃报告系统。由于致命错误通常是“不应发生的已处理错误”,这有助于我们快速识别和修复问题,提高游戏的整体稳定性。
蓝图材质作为参数
我们扩展了蓝图支持,以包含来自 WebUI、Canvas 和 SceneCapture 实体的材质参数。这意味着蓝图现在可以自动从这些实体接收 MaterialInterface 参数。
新的 Widget 类也从中受益!
你可以在 Blueprint 文档页面中查看所有可能的参数类型列表。
资源库改进
标签
我们为资源库显示添加了新图标,用于指示资源是否为官方资源,或者你是否拥有其所有权(属于其团队)。

所有权管理
此外,我们还添加了一个用于管理资源的新标签页,目前仅包含一个跳转到商店的按钮。

本地文件夹
我们还添加了一个新按钮用于打开本地安装文件夹,使管理已下载的资源更加容易。

无网络连接
即使玩家没有网络连接,资源库现在也能正常工作并加载本地资源。
主菜单通知
我们在主菜单中添加了通知,用于显示一般错误和资源库消息。这意味着当资源安装完成或发生错误时,通知将会出现。
当前会话的所有通知都可以在通知 🔔 按钮下的新窗口中找到。

Assets.toml 文件校验器
我们添加了一个新系统,可根据 Assets.toml 自动校验资产包文件。该系统会检查 Assets.toml 中列出的文件是否在磁盘上找不到,帮助快速识别和调试资产问题。
它仅在服务器加载资产包时运行,并会在控制台显示警告。
新的追踪方法
我们为 Trace 添加了新的追踪方法,包括 SphereSingle()、SphereMulti()、BoxSingle()、BoxMulti()、CapsuleSingle() 和 CapsuleMulti()。为游戏世界提供了更多追踪可能性!
新的 Sky 方法
我们添加了多个新的 Sky 方法,允许自定义 Moon 以及 Ultra Dynamic Sky 的其他新属性。
网络通道
我们对游戏框架的网络层做了重大改动。 VOIP 和文件传输现在使用新的低优先级网络通道来传输数据。这意味着当玩家连接(并下载文件)或使用 VOIP(会使用大量网络数据)时,对游戏玩法性能的影响降低了。
Steam 是否已启动
我们添加了一个更好的校验器,用于在启动游戏时检查 Steam 是否已启动。现在会弹出一个提示框,而不是让游戏崩溃。
千万别按“否”。 😉
结语
上个月我们为 nanos world 带来了令人兴奋的新功能和改进!
最受期待的新增内容之一是新类 Widget 的引入!这确实令人兴奋,因为它将大大增加在游戏内创建 UI 的可能性!
菜单通知也为玩家带来了很多便利,我们经常遇到后台发生问题却不知道的情况。有了新的通知系统,我们现在会收到问题警报,也能知道资源库正在做什么!
CharacterSimple 现在更加完整了!随着伤害系统的加入,它现在可以更好地用作敌人或简单的 NPC!
所有这些更新和改进都旨在提升游戏的整体稳定性和体验!非常感谢你们的建议、想法和漏洞报告!
下个月见! Nogitsu 终于可以安息了。 😁
