跳转到内容

界面相关问题

如何实现按钮点击功能?

要想触发控件点击、移动、按下、弹起等,需要注册回调函数。以下是官方提供的注册对应回调函数的API:

UI:RegisterClicked(ItemUID,Callback)—注册控件点击时回调函数
UI:RegisterMoved(ItemUID,Callback)—注册控件移动时回调函数,要在按钮控件的【逻辑】中打开”允许拖动”
UI:RegisterPressed(ItemUID,Callback)—注册控件按下时回调函数
UI:RegisterReleased(ItemUID,Callback)—注册控件弹起时回调函数函数
备注:可以前往API网站-自定义界面UI,查看全部界面相关的API

UI类API用法:

GameClient.lua

--以按下(Pressed)为例,说明控件的使用方法。注意:全部UI类型的API,都需要运行在客户端环境下。
--使用函数 UI:RegisterPressed(ItemUID,Callback)
--第一个参数是控件实例id(可以在编辑-实例信息中查看实例id),第二个参数是回调函数
--建议在GameClient:OnStart()客户端启动时注册,参考下面的例子
function GameClient:OnStart()
UI:RegisterPressed(
pressed_button, --控件的id
function (itemUID,posX,posY) --回调函数与参数
print('itemUID='..itemUID..' posX='..posX..' posY='..posY)--日志打印控件uid等参数
end
)
end
--上面的例子,也可以这样写:
UI:RegisterPressed(pressed_button,Test_UI.TestFunction) --第二个参数是回调函数的名字
--完成回调函数
function Test_UI.TestFunction(itemUID,posX,posY)
print('itemUID='..itemUID..' posX='..posX..' posY='..posY)
end

编程元件如何获取自定义图片的类型 ID?

  • 解答:
(1) 完成自定义图片的上传。
image5(2) 在编程元件中添加自定义属性。
image6(3) 选择【资源】------【图片素材】,并命名,此处以【我的自定义图片】为例
image7
image8
4. 选择自定义图片
  1. 在Lua中获取自定义图片的类型ID
local elementId=System:GetScriptParentID()--获取编程元件实例id
local pictureId = CustomProperty:GetCustomProperty(elementId,'我的自定义图片',CustomProperty.PROPERTY_TYPE.Image)--pictureID为自定义图片ID
print("我的自定义图片:"..tostring(pictureId))
  1. 可在VSCode输出栏中查看与复制该图片素材 ID
image9

如何使用控件动画功能

  • 解答:
image10(1) 选中控件后点击【编辑】进入编辑栏动画一页,点击”+“即可添加动画单元。
image11(2) 点击”编辑”按钮进入动画单元编辑界面,可设置动画循环形式与添加关键帧。
image12(3) 添加关键帧后选中关键帧编辑控件可设置当前关键帧坐标、缩放、透明度等信息。

使用:

GameClient.lua

--@description 游戏开始时客户端的操作
function GameClient:OnStart()
--游戏开始时使用无效,需延迟执行
--延迟3秒
TimerManager:AddTimer(
3.0,
function()
--设置控件可见,将anim_uiId替换为你的控件Id
UI:SetVisible({anim_uiId},true)
--播放动画单元1,将anim_uiId替换为你的控件Id
UI:PlayUIAnimation(anim_uiId, 1, 0)
end
)
end

如何使用动效控件

  • 解答:

动效控件在【动效】-【动画】下。

image13

使用:

GameClient.lua

--@description 游戏开始时客户端的操作
function GameClient:OnStart()
-- 播放动效
UI:EffectStartPlay(ItemUID) -- 替换ItemUID为动效控件的实例ID
-- 延迟0.5秒暂停动效播放
TimerManager:AddTimer(
0.5,
function()
UI:EffectPausePlay(ItemUID) -- 替换ItemUID为动效控件的实例ID
end
)
end

如何使用小地图功能

  • 解答:

创建小地图

image14(1) 先在界面编辑中【功能】-【特殊】中找到【小地图】,然后拖入画布中。
image15(2) 使用小地图功能需要先确定地图区域,选中小地图控件点击【编辑】,进入详情页后点击【逻辑】-【小地图世界坐标】-【前往场景中定位】。
image16(3) 进入场景定位界面,确认小地图左上角与右下角坐标后点击【保存】。保存好后会自动返回界面编辑界面。
image17(4) 点击【样式】-【生成场景对应小地图底图】。
image18(5) 生成后运行游戏,就可以看到玩家标记显示在小地图上且跟随玩家移动和旋转。

小地图使用示例

功能:角色进入信号触发盒切换小地图显隐

GameClient.lua

--@description 游戏开始时客户端的操作
function GameClient:OnStart()
local localPlayerId = Character:GetLocalPlayerId()
--当角色进入信号触发盒切换小地图显隐
System:RegisterEvent(
Events.ON_CHARACTER_ENTER_SIGNAL_BOX,
function (playerId, signalBoxId) --playerId = 玩家id, signalBoxId = 信号触发盒id
-- 如果是本地玩家进入信号触发盒
if playerId == localPlayerId then
-- 进入信号触发盒1时显示小地图1
if signalBoxId == signalBoxId1 then -- 替换signalBoxId1为你的信号触发盒实例ID
UI:SetVisible({ItemUID1},true) -- 替换ItemUID1为你的小地图控件的实例ID
UI:SetVisible({ItemUID2},false) -- 替换ItemUID2为你的另一个小地图控件的实例ID
-- 进入信号触发盒2时显示小地图2
elseif signalBoxId == signalBoxId2 then -- 替换signalBoxId2为你的另一个信号触发盒实例ID
UI:SetVisible({ItemUID1},false)-- 替换ItemUID1为你的小地图控件的实例ID
UI:SetVisible({ItemUID2},true)-- 替换ItemUID2为你的另一个小地图控件的实例ID
end
end
end
)
end

如何设置键位映射(用于优化PC端体验)

  • 解答:
image19(1) 在PC端界面编辑时选中控件下方工具栏会有键位映射按钮。
image20(2) 点击”键位映射”控件会显示该控件对应的键位设置。
image21(3) 点击键位设置会提示”请输入键盘按键更换键位”,此时按下键盘按键即可将次按键设置为该控件对应键位。如要设置为鼠标左键、中键、右键则同样按下即可设置。
image22(4) 如果想重新更改控件对应的键位,再次选中键位设置重新设置即可。