脚本控制UI元素
准备工作
在UI编辑器中,点击 + 新建客户端脚本(New client script) 创建 Lua 脚本 控制UI元素。
填写脚本名称后,可在指定编辑器(如 Visual Studio Code)编写代码。
加载UI元素
通过 UI 项目名称和画布名称加载已创建的UI元素。
-- 获取 UI 组件资源路径
local uiPath = script:GetResourceUri("ygc://")
-- 使用项目名和画布名加载UI元素
local mainPanel = YaUIManager:CreateUIPanel(uiPath, "ProjectName", "MainCanvas")
-- 设置UI元素为全屏模式
mainPanel:SetSize(YaUIManager.ScreenSize)
获取画布上的UI元素
通过 UI 项目中的名称获取UI元素,代码中的名称需与 UI 项目一致。
-- 通过名称获取UI元素
local button = mainPanel:GetButton("Button")
local graph = mainPanel:GetGraph("Graphg")
local image = mainPanel:GetImage("Image")
local list = mainPanel:GetList("List")
local loader = mainPanel:GetLoader("Loader")
local slider = mainPanel:GetSlider("Slider")
local progressBar = mainPalen:GetProgressBar("Progress")
local textField = mainPanel:GetTextField("Text")
local textInput = mainPanel:GetTextInput("Text")
绑定按钮点击事件
local function ButtonOnClickEvent()
-- 在此编写代码
print("按钮被点击")
end
button.OnClick:AddListener0(ButtonOnClickEvent)
绘制与刷新列表
local list = mainPanel:GetList("List")
list.ItemRenderer = OnRenderList
-- 设置列表条目数量
list.NumItems = 10
-- 使用索引和画布渲染列表
local function OnRenderList(index, canvas)
end
-- 刷新列表
list.ItemRenderer = OnRenderList
list.NumItems = 10
绘制与刷新虚拟列表
local list = mainPanel:GetList("List")
list.DefaultItem = "ui://PackageName/CanvasName"
list:SetVirtual()
list.ItemRenderer = OnRenderList
-- 设置虚拟列表条目数量
list.NumItems = 10
-- 使用索引和组件渲染虚拟列表
local function OnRenderList(index, component)
end
-- 刷新虚拟列表
list:RefreshVirtualList(10)
使用加载器
local loader = mainPanel:GetLoader("Loader")
loader.Url = "ui://PackageName/CanvasName"
-- 获取加载器配置的画布
local canvas = loader:GetLoaderComponent()
使用文本
local textField = mainPanel:GetTextField("Text")
-- 设置文本字体大小为 64
textField.FontSize = 64
-- 加粗文本
textField.Bold = true
-- 斜体文本
textField.Italic = true
-- 应用上述设置
textField:ApplyFormat()
-- 文本框内容以打字机效果每秒显示 1 个字符
textField:ShowTypeWritterText("这是对 TextUI元素的测试。", 1)
使用文本输入框
local textInput = mainPanel:GetTextInput("Text")
textInput.SingleLine = true
local function SubmitEvent()
-- 在此编写代码
end
-- 按回车键时触发 OnSubmit,需设置 SingleLine 为 true
textInput.OnSubmit:AddListener0(SubmitEvent)