--- front: hard: 入门 time: 分钟 sidebarDepth: 1 --- # UI控件对象API ## BaseUIControl UI面向对象基类 ### GetChildByName - 描述 根据子控件的名称获取BaseUIControl实例 - 参数 | 参数名 | 数据类型 | 说明 | | :--- | :--- | :--- | | childName | str | 子节点名称 | - 返回值 | 数据类型 | 说明 | | :--- | :--- | | BaseUIControl | 子控件的BaseUIControl实例 | - 示例 ```python # text1的BaseUIControl实例获得text2的BaseUIControl实例 text1Path = "/text1" text1Control = uiNode.GetBaseUIControl(text1Path) text2Control = text1Control.GetChildByName("text2") ``` ### GetChildByPath - 描述 根据相对路径获取BaseUIControl实例 - 参数 | 参数名 | 数据类型 | 说明 | | :--- | :--- | :--- | | childPath | str | 相对当前BaseUIControl路径的路径 | - 返回值 | 数据类型 | 说明 | | :--- | :--- | | BaseUIControl | 子控件的BaseUIControl实例 | - 示例 ```python # 根据路径"/text1"的BaseUIControl实例获得路径为"/text1/text2/text3"的BaseUIControl实例 text1Path = "/text1" text1Control = uiNode.GetBaseUIControl(text1Path) text3Control = text1Control.GetChildByPath("/text2/text3") ``` ### GetPosition - 描述 获取控件相对父节点的坐标 - 参数 无 - 返回值 | 数据类型 | 说明 | | :--- | :--- | | tuple(float,float) | 该控件相对父节点的坐标信息,第一项为横轴,第二项为纵轴 | - 示例 ```python # we want to get text2 position text2Path = "/panel/text2" baseUIControl = uiNode.GetBaseUIControl(text2Path) textPosition = baseUIControl.GetPosition() ``` ### GetSize - 描述 获取控件的大小 - 参数 无 - 返回值 | 数据类型 | 说明 | | :--- | :--- | | tuple(float,float) | 该控件的大小信息,第一项为横轴,第二项为纵轴 | - 示例 ```python # we want to get text2 size text2Path = "/panel/text2" baseUIControl = uiNode.GetBaseUIControl(text2Path) text2Size = baseUIControl.GetSize() ``` ### GetVisible - 描述 根据控件路径返回某控件是否已显示 - 参数 无 - 返回值 | 数据类型 | 说明 | | :--- | :--- | | bool | 该控件是否已显示 | - 示例 ```python # 我们获得panel下面的text2是否显示 text2Path = "/panel/text2" baseUIControl = uiNode.GetBaseUIControl(text2Path) textVisible = baseUIControl.GetVisible() ``` ### SetAlpha - 描述 设置节点的透明度,仅对image和label控件生效 - 参数 | 参数名 | 数据类型 | 说明 | | :--- | :--- | :--- | | alpha | float | 透明度,取值0-1之间,0表示完全透明,1表示完全不透明 | - 返回值 无 - 示例 ```python # 设置text2的透明度为半透明 text2Path = "/panel/text2" baseUIControl = uiNode.GetBaseUIControl(text2Path) baseUIControl.SetAlpha(0.5) ``` ### SetPosition - 描述 设置控件相对父节点的坐标 - 参数 | 参数名 | 数据类型 | 说明 | | :--- | :--- | :--- | | pos | tuple(float,float) | 该控件相对父节点的坐标信息,第一项为横轴,第二项为纵轴 | - 返回值 无 - 示例 ```python # we want to set text2 position text2Path = "/panel/text2" pos = (10, 10) baseUIControl = uiNode.GetBaseUIControl(text2Path) baseUIControl.SetPosition(pos) ``` ### SetSize - 描述 设置控件的大小 - 参数 | 参数名 | 数据类型 | 说明 | | :--- | :--- | :--- | | size | tuple(float,float) | 该控件的大小信息,第一项为横轴,第二项为纵轴 | | resizeChildren | bool | 是否同时调整子控件尺寸,默认为False | - 返回值 无 - 示例 ```python # we want to set text2 size text2Path = "/panel/text2" text2Size = (10, 10) baseUIControl = uiNode.GetBaseUIControl(text2Path) baseUIControl.SetSize(text2Size) ``` ### SetTouchEnable - 描述 设置控件是否可点击交互 - 参数 | 参数名 | 数据类型 | 说明 | | :--- | :--- | :--- | | enable | bool | False为不响应,True为恢复响应 | - 返回值 无 - 示例 ```python # we want to set image_button unable imageButtonPath = "/image_button" baseUIControl = uiNode.GetBaseUIControl(imageButtonPath) baseUIControl.SetTouchEnable(False) ``` ### SetVisible - 描述 根据控件路径选择是否显示某控件 - 参数 | 参数名 | 数据类型 | 说明 | | :--- | :--- | :--- | | visible | bool | False为隐藏该控件,True为显示该控件 | - 返回值 无 - 示例 ```python # 我们隐藏panel下面的text2 text2Path = "/panel/text2" baseUIControl = uiNode.GetBaseUIControl(text2Path) baseUIControl.SetVisible(False) ``` ### asButton - 描述 将当前BaseUIControl转换为ButtonUIControl实例,如当前控件非button类型则返回None - 参数 无 - 返回值 | 数据类型 | 说明 | | :--- | :--- | | ButtonUIControl | ButtonUIControl实例 | - 示例 ```python buttonPath = "/button" buttonBaseControl = uiNode.GetBaseUIControl(buttonPath) buttonControl = buttonBaseControl.asButton() ``` ### asGrid - 描述 将当前BaseUIControl转换为GridUIControl实例,如当前控件非grid类型则返回None - 参数 无 - 返回值 | 数据类型 | 说明 | | :--- | :--- | | GridUIControl | GridUIControl实例 | - 示例 ```python gridPath = "/grid" gridBaseControl = uiNode.GetBaseUIControl(gridPath) gridControl = gridBaseControl.asGrid() ``` ### asImage - 描述 将当前BaseUIControl转换为ImageUIControl实例,如当前控件非image类型则返回None - 参数 无 - 返回值 | 数据类型 | 说明 | | :--- | :--- | | ImageUIControl | ImageUIControl实例 | - 示例 ```python imagePath = "/image" imageBaseControl = uiNode.GetBaseUIControl(imagePath) imageControl = imageBaseControl.asImage() ``` ### asLabel - 描述 将当前BaseUIControl转换为LabelUIControl实例,如当前控件非Label类型则返回None - 参数 无 - 返回值 | 数据类型 | 说明 | | :--- | :--- | | LabelUIControl | LabelUIControl实例 | - 示例 ```python text1Path = "/text1" text1BaseControl = uiNode.GetBaseUIControl(text1Path) text1LabelControl = text1BaseControl.asLabel() ``` ### asNeteasePaperDoll - 描述 将当前BaseUIControl转换为NeteasePaperDollUIControl实例,如当前控件非custom类型则返回None - 参数 无 - 返回值 | 数据类型 | 说明 | | :--- | :--- | | NeteasePaperDollUIControl | NeteasePaperDollUIControl实例 | - 示例 ```python paperDollPath = "/paper_doll" paperDollBaseControl = uiNode.GetBaseUIControl(paperDollPath) paperDollControl = paperDollBaseControl.asNeteasePaperDoll() ``` ### asProgressBar - 描述 将当前BaseUIControl转换为TextEditBoxUIControl实例,如当前控件非panel类型则返回None - 参数 | 参数名 | 数据类型 | 说明 | | :--- | :--- | :--- | | fillImagePath | str | 进度条填充图片路径,默认为"/filled_progress_bar",该参数影响该控件API的效果 | - 返回值 | 数据类型 | 说明 | | :--- | :--- | | ProgressBarUIControl | ProgressBarUIControl实例 | - 示例 ```python progressBarPath = "/progress_bar" progressBarBaseControl = uiNode.GetBaseUIControl(progressBarPath) progressBarControl = progressBarBaseControl.asProgressBar() ``` ### asScrollView - 描述 将当前BaseUIControl转换为ScrollViewUIControl实例,如当前控件非scrollview类型则返回None - 参数 无 - 返回值 | 数据类型 | 说明 | | :--- | :--- | | ScrollViewUIControl | ScrollViewUIControl实例 | - 示例 ```python scrollViewPath = "/scroll_view" scrollViewBaseControl = uiNode.GetBaseUIControl(scrollViewPath) scrollViewControl = scrollviewBaseControl.asScrollView() ``` ### asSwitchToggle - 描述 将当前BaseUIControl转换为SwitchToggleUIControl实例,如当前控件非panel类型则返回None - 参数 无 - 返回值 | 数据类型 | 说明 | | :--- | :--- | | SwitchToggleUIControl | SwitchToggleUIControl实例 | - 示例 ```python switchTogglePath = "/switch_toggle" switchToggleBaseControl = uiNode.GetBaseUIControl(switchTogglePath) switchToggleControl = switchToggleBaseControl.asSwitchToggle() ``` ### asTextEditBox - 描述 将当前BaseUIControl转换为TextEditBoxUIControl实例,如当前控件非editbox类型则返回None - 参数 无 - 返回值 | 数据类型 | 说明 | | :--- | :--- | | TextEditBoxUIControl | TextEditBoxUIControl实例 | - 示例 ```python textEditBoxPath = "/text_edit_box" textEditBoxBaseControl = uiNode.GetBaseUIControl(textEditBoxPath) textEditBoxControl = textEditBoxBaseControl.asTextEditBox() ``` ## GridUIControl UI面向对象网格控件类 ### SetGridDimension - 描述 设置Grid控件的大小 - 参数 | 参数名 | 数据类型 | 说明 | | :--- | :--- | :--- | | dimension | tuple(int,int) | 设置网格的横向与纵向大小 | - 返回值 无 - 示例 ```python # we want change grid dimension gridPath = "/grid1" gridUIControl = uiNode.GetBaseUIControl(gridPath).asGrid() gridUIControl.SetGridDimension((2, 2)) ``` ## ButtonUIControl UI面向对象按钮控件类 ### AddTouchEventParams - 描述 开启按钮回调功能,不调用该函数则按钮无回调 - 参数 | 参数名 | 数据类型 | 说明 | | :--- | :--- | :--- | | args | dict | 默认为None,详细说明请见备注。 | - 返回值 无 - 备注 - AddTouchEventParams参数args说明: | 关键字 | 数据类型 | 说明 | | ----------| --------------------- | ---------| | isSwallow | bool | 默认为True, 按钮是否吞噬事件;或为Ture时,点击按钮时,点击事件不会穿透到世界。如破坏方块、镜头转向不会被响应| - 示例 ```python buttonPath = "/panel/test_btn" buttonUIControl = uiNode.GetBaseUIControl("/panel/test_btn").asButton() buttonUIControl.AddTouchEventParams({"isSwallow":True}) ``` ### SetButtonTouchCancelCallback - 描述 设置触控在按钮范围外弹起时触发的回调函数 - 参数 | 参数名 | 数据类型 | 说明 | | :--- | :--- | :--- | | callbackFunc | function | 回调函数,必须是UI的类函数 | - 返回值 无 - 备注 - 其他相关说明见SetButtonTouchDownCallback接口: - 示例 ```python def onButtonTouchCancelCallback(args): pass buttonPath = "/panel/test_btn" buttonUIControl = uiNode.GetBaseUIControl("/panel/test_btn").asButton() buttonUIControl.AddTouchEventParams({"isSwallow":True}) buttonUIControl.SetButtonTouchCancelCallback(onButtonTouchCancelCallback) ``` ### SetButtonTouchDownCallback - 描述 设置按钮按下时触发的回调函数 - 参数 | 参数名 | 数据类型 | 说明 | | :--- | :--- | :--- | | callbackFunc | function | 回调函数,必须是UI的类函数 | - 返回值 无 - 备注 - onButtonTouchDownCallback参数args说明: | 参数 | 类型 | 解释 | | ----------------- | ----- | ------------------------------------------------------------ | | #collection_name | str | 按钮所属的集合名称 | | #collection_index | int | 按钮在集合所属的集合序号 | | ButtonState | int | 按钮的状态:Up为0,Down为1,默认是-1,建议使用New | | TouchEvent | int | 按钮的状态新版本:Up为0,Down为1,Cancel为3,Move为4,默认是-1 | | PrevButtonDownID | str | 上一个被点击Down的按钮的ID,如果没有取值为"-1" | | TouchPosX | float | 按钮被点击时屏幕上的UI坐标X值 | | TouchPosY | float | 按钮被点击时屏幕上的UI坐标Y值 | | ButtonPath | str | 被点击的按钮的ComponentPath | 事件之间的关系如下图所示: ![事件说明](./picture/touch_event.png) - 示例 ```python def onButtonTouchDownCallback(args): pass buttonPath = "/panel/test_btn" buttonUIControl = uiNode.GetBaseUIControl("/panel/test_btn").asButton() buttonUIControl.AddTouchEventParams({"isSwallow":True}) buttonUIControl.SetButtonTouchDownCallback(onButtonTouchDownCallback) ``` ### SetButtonTouchMoveCallback - 描述 设置按下后触控移动时触发的回调函数 - 参数 | 参数名 | 数据类型 | 说明 | | :--- | :--- | :--- | | callbackFunc | function | 回调函数,必须是UI的类函数 | - 返回值 无 - 备注 - 其他相关说明见SetButtonTouchDownCallback接口: - 示例 ```python def onButtonTouchMoveCallback(args): pass buttonPath = "/panel/test_btn" buttonUIControl = uiNode.GetBaseUIControl("/panel/test_btn").asButton() buttonUIControl.AddTouchEventParams({"isSwallow":True}) buttonUIControl.SetButtonTouchMoveCallback(onButtonTouchMoveCallback) ``` ### SetButtonTouchMoveInCallback - 描述 设置按下按钮后进入控件时触发的回调函数 - 参数 | 参数名 | 数据类型 | 说明 | | :--- | :--- | :--- | | callbackFunc | function | 回调函数,必须是UI的类函数 | - 返回值 无 - 备注 - 其他相关说明见SetButtonTouchDownCallback接口: - 示例 ```python def onButtonTouchMoveInCallback(args): pass buttonPath = "/panel/test_btn" buttonUIControl = uiNode.GetBaseUIControl("/panel/test_btn").asButton() buttonUIControl.AddTouchEventParams({"isSwallow":True}) buttonUIControl.SetButtonTouchMoveInCallback(onButtonTouchMoveInCallback) ``` ### SetButtonTouchMoveOutCallback - 描述 设置按下按钮后退出控件时触发的回调函数 - 参数 | 参数名 | 数据类型 | 说明 | | :--- | :--- | :--- | | callbackFunc | function | 回调函数,必须是UI的类函数 | - 返回值 无 - 备注 - 其他相关说明见SetButtonTouchDownCallback接口: - 示例 ```python def onButtonTouchMoveOutCallback(args): pass buttonPath = "/panel/test_btn" buttonUIControl = uiNode.GetBaseUIControl("/panel/test_btn").asButton() buttonUIControl.AddTouchEventParams({"isSwallow":True}) buttonUIControl.SetButtonTouchMoveOutCallback(onButtonTouchMoveOutCallback) ``` ### SetButtonTouchUpCallback - 描述 设置触控在按钮范围内弹起时的回调函数 - 参数 | 参数名 | 数据类型 | 说明 | | :--- | :--- | :--- | | callbackFunc | function | 回调函数,必须是UI的类函数 | - 返回值 无 - 备注 - 其他相关说明见SetButtonTouchDownCallback接口: - 示例 ```python def onButtonTouchUpCallback(args): pass buttonPath = "/panel/test_btn" buttonUIControl = uiNode.GetBaseUIControl("/panel/test_btn").asButton() buttonUIControl.AddTouchEventParams({"isSwallow":True}) buttonUIControl.SetButtonTouchUpCallback(onButtonTouchUpCallback) ``` ## LabelUIControl UI面向对象文本控件类 ### GetText - 描述 获取Label的文本信息,获取失败会返回None - 参数 无 - 返回值 | 数据类型 | 说明 | | :--- | :--- | | str | 文本信息 | - 备注 - 获取失败通常是由于路径填写错误,或该控件不是Label类型 - 示例 ```python # we want to get text2 content text2Path = "/panel/text2" labelUIControl = uiNode.GetBaseUIControl(text2Path).asLabel() labelUIControl.GetText() ``` ### GetTextColor - 描述 获取Label文本颜色 - 参数 无 - 返回值 | 数据类型 | 说明 | | :--- | :--- | | tuple(float,float,float,float) | 获取文本的颜色信息(r, g, b, a), 取值[0, 1] | - 示例 ```python # we want to get text2 color text2Path = "/panel/text2" labelUIControl = uiNode.GetBaseUIControl(text2Path).asLabel() labelUIControl.GetTextColor() ``` ### SetText - 描述 设置Label的文本信息 - 参数 | 参数名 | 数据类型 | 说明 | | :--- | :--- | :--- | | text | str | 文本的内容,可以支持[样式代码](https://minecraft-zh.gamepedia.com/%E6%A0%B7%E5%BC%8F%E4%BB%A3%E7%A0%81)(§可以设置文字的颜色、格式等,该种用法更加灵活多变) | | syncSize | bool | 是否设置文本时同步更新文本框大小,默认值为False | - 返回值 无 - 示例 ```python # we want to set text2 content text2Path = "/panel/text2" text = "Hello World!" labelUIControl = uiNode.GetBaseUIControl(text2Path).asLabel() labelUIControl.SetText(text) ``` ### SetTextColor - 描述 设置Label文本的颜色 - 参数 | 参数名 | 数据类型 | 说明 | | :--- | :--- | :--- | | color | tuple(float,float,float,float) | 文本的颜色信息(r, g, b, a),取值[0, 1] | - 返回值 无 - 示例 ```python # we want to set text2 green text2Path = "/panel/text2" color = (0, 1, 0, 0.8) labelUIControl = uiNode.GetBaseUIControl(text2Path).asLabel() labelUIControl.SetTextColor(color) ``` ### SetTextFontSize - 描述 设置Label中文本字体的大小 - 参数 | 参数名 | 数据类型 | 说明 | | :--- | :--- | :--- | | componentPath | str | 为从main节点开始的控件路径 | | scale | float | label的font_size的作用是Label中的默认字体大小,取值有限为[small normal large],这个scale是在这个默认字体的基础上进行缩放字体大小,默认字体大小为1.0 | - 返回值 无 - 示例 ```python # set text font size text2Path = "/panel/text2" labelUIControl = uiNode.GetBaseUIControl(text2Path).asLabel() labelUIControl.SetTextFontSize(0.8) ``` ## ScrollViewUIControl UI面向对象滚动列表控件类 ### GetScrollViewContentControl - 描述 返回该scroll_view内容的路径 - 参数 无 - 返回值 | 数据类型 | 说明 | | :--- | :--- | | BaseUIControl | 该scroll_view内容的BaseUIControl实例 | - 示例 ```python # we want get scroll_view content scrollViewPath = "/scroll_view0" scrollViewUIControl = uiNode.GetBaseUIControl(scrollViewPath).asScrollView() contentUIControl = scrollViewUIControl.GetScrollViewContentControl() ``` ### GetScrollViewContentPath - 描述 返回该scroll_view内容的路径 - 参数 无 - 返回值 | 数据类型 | 说明 | | :--- | :--- | | str | 该scroll_view内容的路径 | - 示例 ```python # we want get scroll_view content path scrollViewPath = "/scroll_view0" scrollViewUIControl = uiNode.GetBaseUIControl(scrollViewPath).asScrollView() path = scrollViewUIControl.GetScrollViewContentPath() ``` ### GetScrollViewPos - 描述 获得当前scroll_view最上方内容的位置 - 参数 无 - 返回值 | 数据类型 | 说明 | | :--- | :--- | | float | 当前scroll_view最上方内容的位置 | - 示例 ```python # we want get scroll_view pos scrollViewPath = "/scroll_view0" scrollViewUIControl = uiNode.GetBaseUIControl(scrollViewPath).asScrollView() scrollViewUIControl.GetScrollViewPos() ``` ### SetScrollViewPercentValue - 描述 设置当前scroll_view内容的百分比位置 - 参数 | 参数名 | 数据类型 | 说明 | | :--- | :--- | :--- | | percent_value | int | 需要跳转到的百分比位置,一般设置的位置会出现在scroll_view的最上方。该值取值范围0-100 | - 返回值 无 - 示例 ```python # we want set scroll_view percent pos scrollViewPath = "/scroll_view0" scrollViewUIControl = uiNode.GetBaseUIControl(scrollViewPath).asScrollView() scrollViewUIControl.SetScrollViewPercentValue(20) ``` ### SetScrollViewPos - 描述 设置当前scroll_view内容的位置 - 参数 | 参数名 | 数据类型 | 说明 | | :--- | :--- | :--- | | pos | float | 需要跳转到的位置,一般设置的位置会出现在scroll_view的最上方。 | - 返回值 无 - 示例 ```python # we want set scroll_view pos scrollViewPath = "/scroll_view0" scrollViewUIControl = uiNode.GetBaseUIControl(scrollViewPath).asScrollView() scrollViewUIControl.SetScrollViewPos(100) ``` ## ImageUIControl UI面向对象图片控件类 ### SetSprite - 描述 给图片控件换指定贴图 - 参数 | 参数名 | 数据类型 | 说明 | | :--- | :--- | :--- | | texturePath | str | 贴图的路径,需要从resource_pack下面的textures目录开始 | - 返回值 无 - 备注 - 给ImageButton换贴图的时候注意使用子控件路径(default / hover / pressed)获得ImageUIControl - 示例 ```python # we want to set image_button textures imageButtonPath = "/image_button" buttonUIControl = uiNode.GetBaseUIControl(imageButtonPath).asButton() buttonDefaultUIControl = buttonUIControl.GetChildByName("default").asImage() buttonHoverUIControl = buttonUIControl.GetChildByName("hover").asImage() buttonPressedUIControl = buttonUIControl.GetChildByName("pressed").asImage() buttonDefaultUIControl.SetSprite("textures/button01_default") buttonHoverUIControl.SetSprite("textures/button01_hover") buttonPressedUIControl.SetSprite("textures/button01_pressed") ``` ### SetSpriteClipRatio - 描述 设置图片的裁剪区域比例(不改变控件尺寸)。可以配合image控件的clip_ratio属性控制方向。 - 参数 | 参数名 | 数据类型 | 说明 | | :--- | :--- | :--- | | clipRatio | float | 图片的裁剪比例(范围0到1),裁剪精度与图片分辨率相关 | - 返回值 无 - 示例 ```python # 我们想对UI编辑器创建的进度条设置进度 # 编辑器进度条包含两个image控件(名为empty_progress_bar和filled_progress_bar) progress = 0.8 # 用于模拟进度时,下面的裁剪比例需设为(1-进度),才能得到正确的视觉效果 imagePath = "/progress_bar0/filled_progress_bar" imageUIControl = uiNode.GetBaseUIControl(imagePath).asImage() imageUIControl.SetSpriteClipRatio(1.0 - progress) ``` ### SetSpriteColor - 描述 设置图片颜色 - 参数 | 参数名 | 数据类型 | 说明 | | :--- | :--- | :--- | | color | tuple(float,float,float) | 图片颜色rgb | - 返回值 无 - 示例 ```python # 我们想对耐久度条随耐久度变化颜色,满的时候为绿色,空的时候为红色,其中barPath为耐久度条路径 durabilityRatio = 0.8 # 耐久度比例,1为满耐久 barPath = "/image_bar" imageUIControl = uiNode.GetBaseUIControl(barPath).asImage() imageUIControl.SetSpriteColor((1 - durabilityRatio, durabilityRatio, 0)) ``` ### SetSpriteGray - 描述 给图片控件置灰,比直接SetSprite一张灰图片效率要高 - 参数 | 参数名 | 数据类型 | 说明 | | :--- | :--- | :--- | | gray | bool | True为将图片置灰,False为恢复原色 | - 返回值 无 - 示例 ```python # we want set image gray imagePath = "/image" imageUIControl = uiNode.GetBaseUIControl(imagePath).asImage() imageUIControl.SetSpriteGray(True) ``` ### SetSpriteUV - 描述 设置图片的起始uv,与json中的"uv"属性作用一致 - 参数 | 参数名 | 数据类型 | 说明 | | :--- | :--- | :--- | | uv | tuple(float,float) | 图片的左上角为(0,0),向右为x轴,向下为y轴 | - 返回值 无 - 示例 ```python imagePath = "/image" imageUIControl = uiNode.GetBaseUIControl(imagePath).asImage() imageUIControl.SetSpriteUV((10, 0)) ``` ### SetSpriteUVSize - 描述 设置图片的uv大小,与json中的"uv_size"属性作用一致 - 参数 | 参数名 | 数据类型 | 说明 | | :--- | :--- | :--- | | uvSize | tuple(float,float) | 图片向右为x轴,向下为y轴 | - 返回值 无 - 示例 ```python imagePath = "/image" imageUIControl = uiNode.GetBaseUIControl(imagePath).asImage() imageUIControl.SetSpriteUVSize((40, 30)) ``` ## SwitchToggleUIControl UI面向对象开关控件类 ### SetToggleState - 描述 设置Toggle开关控件的值 - 参数 | 参数名 | 数据类型 | 说明 | | :--- | :--- | :--- | | is_on | bool | 设置Toggle开关控件是打开还是关闭状态 | - 返回值 无 - 示例 ```python togglePath = "/toggle1" switchToggleUIControl = uiNode.GetBaseUIControl(togglePath).asSwitchToggle() switchToggleUIControl.SetToggleState(True) ``` ## TextEditBoxUIControl UI面向对象文本输入框控件类 ### GetEditText - 描述 获取edit_box输入框的文本信息,获取失败会返回None - 参数 无 - 返回值 | 数据类型 | 说明 | | :--- | :--- | | str | 文本信息 | - 备注 - 获取失败通常是由于路径填写错误,或该控件不是edit_box类型 - 示例 ```python # we want to get edit2 content editBoxPath = "/panel/edit2" textEditBoxUIControl = uiNode.GetBaseUIControl(editBoxPath).asTextEditBox() text = textEditBoxUIControl.GetEditText() ``` ### SetEditText - 描述 设置edit_box输入框的文本信息 - 参数 | 参数名 | 数据类型 | 说明 | | :--- | :--- | :--- | | text | str | 文本的内容 | - 返回值 无 - 示例 ```python # we want to clear edit2 content editBoxPath = "/panel/edit2" text = "" textEditBoxUIControl = uiNode.GetBaseUIControl(editBoxPath).asTextEditBox() textEditBoxUIControl.SetEditText(text) ``` ### SetEditTextMaxLength - 描述 设置输入框的最大输入长度 - 参数 | 参数名 | 数据类型 | 说明 | | :--- | :--- | :--- | | maxLength | int | 输入框可输入的最大长度,取值[0, +∞) | - 返回值 无 - 示例 ```python # we want to set text_edit_box max input length 10 editTextPath = "/panel2/text_edit_box" textEditBoxUIControl = uiNode.GetBaseUIControl(editBoxPath).asTextEditBox() textEditBoxUIControl.SetEditTextMaxLength(10) ``` ## NeteasePaperDollUIControl I面向对象纸娃娃控件类 用于在UI上渲染实体/骨骼模型/特效 ### GetModelId - 描述 获取渲染的骨骼模型Id - 参数 无 - 返回值 | 数据类型 | 说明 | | :--- | :--- | | int | 骨骼模型Id,失败或者不存在返回-1 | - 备注 - 注意:请不要在RenderEntity/RenderSkeletonModel调用之后立即执行。 骨骼模型Id可用于一下情形: 1.绑定一个另外的骨骼模型; 2.绑定序列帧动画; 3.绑定特效粒子动画 - 示例 ```python import mod.client.extraClientApi as clientApi path = '/demoPanel/paper_doll' doll = uiNode.GetBaseUIControl(path).asNeteasePaperDoll() modelId = doll.GetModelId() if modelId == -1: return #用途1:绑定一个另外的骨骼模型 modelComp = clientApi.GetEngineCompFactory().CreateModel(modelId) newModelId = modelComp.BindModelToModel("rightHand", "gun") # 把名称为gun的骨骼模型挂接到rightHand骨骼上 #用途2:绑定序列帧动画 sfxId = clientSystem.CreateEngineSfxFromEditor("effects/example_sfx.json") # 创建特效 comp = clientApi.GetEngineCompFactory().CreateFrameAniSkeletonBind(sfxId) comp.Bind(modelId, "root", (0, 1, 0), (0, 0, 0)) # 把特效绑定到骨骼模型的骨骼节点上 frameComp = clientApi.GetEngineCompFactory().CreateFrameAniControl(sfxId) frameComp.Play() # 播放动画 clientSystem.DestroyEntity(sfxId) # 销毁动画 #用途3:绑定特效粒子动画 particleEntityId = clientSystem.CreateEngineParticle("effects/example_particle.json", (0,0,0)) # 创建特效 comp = clientApi.GetEngineCompFactory().CreateParticleSkeletonBind(particleEntityId) comp.Bind(modelId, "root", (0, 1, 0), (0, 0, 0)) # 把特效绑定到骨骼模型的骨骼节点上 particleComp = clientApi.GetEngineCompFactory().CreateParticleControl(particleEntityId) particleComp.Play() # 播放动画 clientSystem.DestroyEntity(particleEntityId) # 销毁动画 ``` ### RenderEntity - 描述 渲染实体 - 参数 | 参数名 | 数据类型 | 说明 | | :--- | :--- | :--- | | params | dict | 渲染参数,详细说明请见备注 | - 返回值 | 数据类型 | 说明 | | :--- | :--- | | bool | 是否成功 | - 备注 - RenderEntity参数params说明: params参数解释如下: | 参数 | 类型 | 解释 | | ----------------- | ----- | ------------------------------------------------------------ | | entity_id | str | 渲染生物的实体Id | | scale | float | 渲染缩放比例,默认为1.0 | | render_depth | int | 渲染深度,对于玩家默认-50,普通生物-15,该参数可解决UI遮挡剔除问题 | | init_rot_y | float | 初始Y方向的朝向 | | molang_dict | dict | molang表达式字典,其中key为str,value为float | - 示例 ```python path = '/demoPanel/paper_doll' param = { "entity_id": "-8589934591", "scale": 0.5, "render_depth": -50, "init_rot_y": 60, "molang_dict": {"variable.liedownamount": 1} } doll = uiNode.GetBaseUIControl(path).asNeteasePaperDoll() doll.RenderEntity(param) ``` ### RenderSkeletonModel - 描述 渲染骨骼模型(不依赖实体) - 参数 | 参数名 | 数据类型 | 说明 | | :--- | :--- | :--- | | params | dict | 渲染参数,详细说明请见备注 | - 返回值 | 数据类型 | 说明 | | :--- | :--- | | bool | 是否成功 | - 备注 - RenderSkeletonModel参数params说明: params参数解释如下: | 参数 | 类型 | 解释 | | ----------------- | ----- | ------------------------------------------------------------ | | skeleton_model_name | str | 骨骼模型名称 | | animation | str | 骨骼动作名称,默认为idle | | animation_looped | bool | 骨骼动作是否循环播放,默认True | | scale | float | 渲染缩放比例,默认为1.0 | | render_depth | int | 渲染深度,对于玩家默认-50,普通生物-15,该参数可解决UI遮挡剔除问题 | | init_rot_y | float | 初始Y方向的朝向 | | molang_dict | dict | molang表达式字典,其中key为str,value为float | - 示例 ```python import mod.client.extraClientApi as clientApi path = '/demoPanel/paper_doll' param = { "skeleton_model_name": "ty_yuanshenghuli_0_0", "animation": "idle_stand", "scale": 0.5, "render_depth": -50, "init_rot_y": 60, "molang_dict": {"variable.liedownamount": 1} } doll = uiNode.GetBaseUIControl(path).asNeteasePaperDoll() doll.RenderSkeletonModel(param) ``` ## ProgressBarUIControl UI面向对象进度条控件类 ### SetValue - 描述 设置进度条的进度 - 参数 | 参数名 | 数据类型 | 说明 | | :--- | :--- | :--- | | progress | float | 进度,取值[0, 1] | - 返回值 无 - 示例 ```python # we want to set progress progressBarPath = "/panel/progress_bar" progressBarUIControl = uiNode.GetBaseUIControl(progressBarPath).asProgressBar() progressBarUIControl.SetValue(0.8) ```