通用设置接口规范
欢迎使用由官方牵头,允许开发者通过接口快速注册设置选项的工具。
下面我们将介绍如何使用通用设置接口。
由于通用设置接口不更改引擎内容,可不需要跟整包更新,补全库更新后即可使用。
注册通用设置界面
我们首先需要获取通用设置接口的Comp组件,然后在Comp组件中使用RegisterSettingInst方法
comp = clientApi.GetEngineCompFactory().CreateNeteaseWindow(playerId)
# 第一个参数必须要填写 ItemID,我们强烈建议您先上传一个模组,获取到ItemID再进行开发。
# 后面两个参数是为了在 ModPC 中测试开发而引入的参数,在正式服中后面两个参数没有任何作用。
settingInst = comp.RegisterSettingInst("itemId", "模组1", "textures/ui/abc")由于要传入 itemId,你需要先在开平上传一个模组,获取到 itemId,然后再通过此方法注册
由于页面注册的到的是 Cocos UI 页面,页面里的模组数据都是从开平上传的模组中获取的,所以才需要传入 itemId
由于ModPC不自带 Cocos UI 页面,所以需要传入后面两个参数,以便ModPC使用进行测试
注册控件
控件是指在设置页面中的设置选项,例如按钮、开关、输入框等
控件注册允许链式调用
if settingInst:
# 允许链式调用,添加多个控件
(settingInst
.AddText("text_uid_01", "这是一段文字",5)
.AddToggle("toggle_uid_01", "开关按钮", callbackFunction, 1, False)
.AddToggle("toggle_uid_02", "开关按钮2", callbackFunction, 3, False)
.AddToggle("toggle_uid_03", "开关按钮3", callbackFunction, 4, True)
.AddInput("input_uid_01", "输入框", callbackFunction, 2, "神秘")
.AddButton("button_uid_01", "按钮", "点击前往设置页面", callback, 2))callbackFunction与callback是回调函数
def callbackFunction(*args):
# args1 参数是 key 值,用于获取控件ID
# args2 参数是 value 值,用于获取控件的当前值
if settingInst.GetToggleDefault("toggle_uid_01"):
#获取 控件1 的默认值,如果是True,则将默认值改成 False,下次打开页面就会显示False了
# settingInst.SetToggleDefault("toggle_uid_01", False)
settingInst.SetLockSettingComp("toggle_uid_02", False)
else:
# 这里我们判断,如果从 False 改成 True了,我们还会给控件 toggle_uid_02 上锁
# settingInst.SetToggleDefault("toggle_uid_01", True)
settingInst.SetLockSettingComp("toggle_uid_02", True)
def callback(*args):
# args1 参数是 key 值,用于获取控件ID
# args2 参数是 value 值,用于获取控件的当前值
comp.CloseSettingUI()上述内容完成后您就成功注册了设置界面中的控件,并且可以通过设置页面中的按钮进行调用。
此时你就可以前往开发者测试服查看效果

设置页面集束在 暂停菜单 - 模组 中
我们不限制开发者必须把模组设置做在通用设置界面中,但设置入口一定要在这个界面中,减少玩家寻找模组设置的时间成本。
您可以只在通用设置界面注册一个按钮,点击按钮可以跳转到你们的设置页面中
疑难解答
Q1:怎么没有翻页功能?
A:为了确保与原本UI风格一致,我们没有做翻页功能,而是内置了滚动功能。
Q2:怎么不能加图片?
A:为了确保各开发者风格一致,我们没有做图片功能,以免开发者随心所欲添加图片造成设置界面杂乱无章
Q3:限制有点大,我不想用你们的设置怎么办?
A:我们不限制开发者使用自己的设置界面,但为了提高玩家体验,减少模组设置学习成本,开发者可以即使不适用官方提供的设置接口,也可以在这个页面注册按钮,允许玩家点击按钮打开开发者自己定义的设置界面中
接口速查
CloseSettingUI
客户端
method in mod.client.component.neteaseWindowCompClient.NeteaseWindowCompClient
描述
关闭模组信息界面
参数
无
返回值
数据类型说明 bool 是否关闭成功 备注
- 该接口在modPC环境下,将是关闭局内json ui
示例
import mod.client.extraClientApi as clientApi
levelId = clientApi.GetLevelId()
comp = clientApi.GetEngineCompFactory().CreateNeteaseWindow(levelId)
# 关闭界面
result = comp.CloseSettingUI()GetSettingInst
客户端
method in mod.client.component.neteaseWindowCompClient.NeteaseWindowCompClient
描述
获取当前模组的通用设置实例
参数
参数名 数据类型说明 modNamespace str 组件命名空间,需唯一性,仅在开发环境预览使用 返回值
数据类型说明 SettingInst 返回实例对象,未注册则返回None 备注
- 请先使用RegisterSettingInst注册,再使用GetSettingInst获取。
- 开发环境中,将会获取modNamespace对应的通用设置实例;正式环境中则仅能获取当前模组注册的实例。
- 建议不要在__init__的时候就获取实例,过早获取会返回None。
示例
import mod.client.extraClientApi as clientApi
levelId = clientApi.GetLevelId()
comp = clientApi.GetEngineCompFactory().CreateNeteaseWindow(levelId)
settingInst = comp.GetSettingInst()
if settingInst:
settingInst.AddText("text_uid_01", "这是一段文字").AddToggle("toggle_uid_01", "开关按钮", False, callbackFunction)OpenSettingUI
客户端
method in mod.client.component.neteaseWindowCompClient.NeteaseWindowCompClient
描述
在模组信息界面中打开设置页面(此操作仅可访问本模组的配置选项)
参数
无
返回值
数据类型说明 bool 是否打开成功 备注
- 该接口在modPC环境下,将是打开局内json ui
示例
import mod.client.extraClientApi as clientApi
levelId = clientApi.GetLevelId()
comp = clientApi.GetEngineCompFactory().CreateNeteaseWindow(levelId)
# 打开界面
result = comp.OpenSettingUI()RegisterSettingInst
客户端
method in mod.client.component.neteaseWindowCompClient.NeteaseWindowCompClient
描述
注册通用设置实例
参数
参数名 数据类型说明 modNamespace str 组件命名空间,需唯一性,仅在开发环境预览使用 modName str 组件名字,默认为None,仅在开发环境预览使用 iconPath str 组件icon图路径,默认为None,仅在开发环境预览使用 返回值
数据类型说明 SettingInst 返回实例对象,系统未初始化则返回None 备注
- 每个模组仅能注册一个通用设置实例,重复注册会返回同样的实例。
- 建议在UiInitFinished触发时再注册,注册过早会导致注册失败而返回None。
- 设置界面的注册是通过Scripts文件夹名称来判断是由哪个模组注册的实例,开发者的Scripts名称需要确保不与其他模组作者的Scripts名称冲突。
示例
import mod.client.extraClientApi as clientApi
levelId = clientApi.GetLevelId()
comp = clientApi.GetEngineCompFactory().CreateNeteaseWindow(levelId)
settingInst = comp.RegisterSettingInst("123456789", "模组1", "textures/ui/abc")
if settingInst:
settingInst.AddText("text_uid_01", "这是一段文字").AddToggle("toggle_uid_01", "开关按钮", False, callbackFunction)SettingInst 下的方法
AddText
添加文本控件。
def AddText(self, key, name, priority=None)参数
参数名 数据类型 说明 key str 控件id name str 控件的文字描述 priority int或None 显示顺序优先级,默认根据添加顺序排列 返回值
数据类型 说明 SettingInst 当前实例,支持链式调用
AddToggle
添加开关控件。
def AddToggle(self, key, name, callback, priority=None, default=False)参数
参数名 数据类型 说明 key str 控件id name str 控件的文字描述 callback function 控件的回调函数,定义: def callback(*args)priority int或None 显示顺序优先级,默认根据添加顺序排列 default bool 默认值,默认为False 返回值
数据类型 说明 SettingInst 当前实例,支持链式调用
AddSlider
添加滑动条控件。
def AddSlider(self, key, name, step, callback, priority=None, default=0)参数
参数名 数据类型 说明 key str 控件id name str 控件的文字描述 step int 滑动条的最大值,范围:0~step callback function 控件的回调函数,定义: def callback(*args)priority int或None 显示顺序优先级,默认根据添加顺序排列 default int 默认值,默认为0 返回值
数据类型 说明 SettingInst 当前实例,支持链式调用
AddDropDown
添加下拉选项控件。
def AddDropDown(self, key, name, options, callback, priority=None, default=None)参数
参数名 数据类型 说明 key str 控件id name str 控件的文字描述 options list[str] 下拉选项列表 callback function 控件的回调函数,定义: def callback(*args)priority int或None 显示顺序优先级,默认根据添加顺序排列 default str或None 默认选项,该值需在options中 返回值
数据类型 说明 SettingInst 当前实例,支持链式调用
AddInput
添加输入框控件。
def AddInput(self, key, name, callback, priority=None, default="")参数
参数名 数据类型 说明 key str 控件id name str 控件的文字描述 callback function 控件的回调函数,定义: def callback(*args)priority int或None 显示顺序优先级,默认根据添加顺序排列 default str 默认显示的文本,默认为空字符串 返回值
数据类型 说明 SettingInst 当前实例,支持链式调用
AddButton
添加按钮控件。
def AddButton(self, key, name, buttonText, callback, priority=None)参数
参数名 数据类型 说明 key str 控件id name str 控件的文字描述 buttonText str 按钮的文字描述 callback function 控件的回调函数,定义: def callback(*args)priority int或None 显示顺序优先级,默认根据添加顺序排列 返回值
数据类型 说明 SettingInst 当前实例,支持链式调用
GetToggleDefault
获取开关控件的默认值。
def GetToggleDefault(self, key)参数
参数名 数据类型 说明 key str 控件id 返回值
数据类型 说明 bool 开关状态
GetInputDefault
获取输入框的默认输入文本。
def GetInputDefault(self, key)参数
参数名 数据类型 说明 key str 控件id 返回值
数据类型 说明 str 输入框的文本
GetDropDownDefault
获取下拉选项控件的默认值。
def GetDropDownDefault(self, key)参数
参数名 数据类型 说明 key str 控件id 返回值
数据类型 说明 str 默认选项在列表中的索引
GetSliderDefault
获取滑动条控件的默认值。
def GetSliderDefault(self, key)参数
参数名 数据类型 说明 key str 控件id 返回值
数据类型 说明 int 滑块的值
GetText
获取文字控件的文本。
def GetText(self, key)参数
参数名 数据类型 说明 key str 控件id 返回值
数据类型 说明 str 显示的文本
SetToggleDefault
设置开关控件的默认值。
def SetToggleDefault(self, key, value)参数
参数名 数据类型 说明 key str 控件id value bool 开关的值 返回值
数据类型 说明 SettingInst 当前实例,支持链式调用
SetInputDefault
设置输入框控件的默认文本。
def SetInputDefault(self, key, value)参数
参数名 数据类型 说明 key str 控件id value str 显示的文本 返回值
数据类型 说明 SettingInst 当前实例,支持链式调用
SetDropDownDefault
设置下拉选项控件的默认选项。
def SetDropDownDefault(self, key, option)参数
参数名 数据类型 说明 key str 控件id option str 选项文字,如文字不在选项列表里,会自动添加到列表 返回值
数据类型 说明 SettingInst 当前实例,支持链式调用
SetSliderDefault
设置滑动条控件的默认值。
def SetSliderDefault(self, key, value)参数
参数名 数据类型 说明 key str 控件id value int 滑块的值 返回值
数据类型 说明 SettingInst 当前实例,支持链式调用
SetButtonText
设置按钮控件的文字。
def SetButtonText(self, key, value)参数
参数名 数据类型 说明 key str 控件id value str 显示的文字 返回值
数据类型 说明 SettingInst 当前实例,支持链式调用
SetText
设置文本控件的值。
def SetText(self, key, value)参数
参数名 数据类型 说明 key str 控件id value str 显示的文本 返回值
数据类型 说明 SettingInst 当前实例,支持链式调用
SetLockSettingComp
设置锁定控件,锁定后无法点击。
def SetLockSettingComp(self, key, is_locked)参数
参数名 数据类型 说明 key str 控件id is_locked bool 是否锁定 返回值
数据类型 说明 SettingInst 当前实例,支持链式调用
GetFormatData
获取当前实例的结构化数据,控件数据根据priority的值升序排序。
def GetFormatData(self)参数
无
返回值
数据类型 说明 dict 结构化数据 返回格式
json{ "modId": "str // 模组ID", "name": "str // 名称", "icon": "str // 图标路径", "settings": "list // 设置项列表,按priority升序排序" }
GetSettingsControl
获取控件的结构化数据。
def GetSettingsControl(self, key)参数
参数名 数据类型 说明 key str 控件id 返回值
数据类型 说明 dict 控件的结构化数据
GetModId
获取实例的modId。
def GetModId(self)参数
无
返回值
数据类型 说明 str 模组ID
GetAutoPriority
获取自动设置的优先级的值。
def GetAutoPriority(self)参数
无
返回值
数据类型 说明 int 当前自动优先级的值 备注
当添加控件时,如果不设置优先级,则会自动从0开始设置。优先级会影响控件排列顺序,升序排列。