# 类 MotaSetting 渲染进程类,在游戏进程不可直接使用,继承自 [`EventEmitter`](./event-emitter.md) - 实例成员 - [`readonly list`](#readonly-list) - 实例方法 - [`reset`](#reset) - [`register`](#register) - [`getSetting`](#getsetting) - [`setValue`](#setvalue) - [`addValue`](#addvalue) - [`getValue`](#getvalue) - [`setDisplayFunc`](#setdisplayfunc) - [`setValueController`](#setvaluecontroller) - [`setDescription`](#setdescription) - 静态成员 - [`noStorage`](#nostorage) - 实例事件 - [`valueChange`](#valuechange-事件) ## readonly list ```ts declare const list: Record ``` - 成员说明 该成员描述了这个设置实例在这一级设置中的所有设置。理论上其所有成员都是只读的。 - 接口 `MotaSettingItem` ```ts interface MotaSettingItem { name: string; // 设置的显示名称 key: string; // 设置的名称(id) value: T; // 设置当前的值 controller: SettingComponent; // 设置的编辑组件 description?: string; // 设置的说明文字 defaults?: boolean | number; // 设置的默认值 step?: [number, number, number]; // 数字型设置的步长信息 display?: (value: T) => string; // 设置显示函数 } ``` - 详细说明 - `name`: 设置的显示名称,例如 `宝石血瓶显伤` - `key`: 设置的名称,也就是设置的 id,不能包含 `.` - `value`: 设置当前的值,可以是数字、布尔值和设置实例,该项是设置实例时表示级联设置。通过方法 [`setValue`](#setvalue) 设置,在设置时**不可**更改数据类型 - `controller`: 设置的编辑组件,可以通过 [`setValueController`](#setvaluecontroller) 方法设置,一般在注册设置的时候指定 - `description`: 设置的说明文字,如果使用默认的设置 UI 的话,会显示在右方 - `defaults`: 设置的默认值,在注册后,如果没有设置,那么设置就会是这个值。当设置是一个级联设置的时候,该项为 `undefined` - `step`: 当此项设置为数字型设置时,该成员表示步长信息,第一项表示最小值,第二项表示最大值,第三项表示单步步长 - `display`: 设置的显示函数,如果设置了,那么显示的值会是它的返回值,参考[指南](../../guide/setting.md#设置显示函数) ## reset() ```ts declare function reset(setting: Record): void ``` - 参数说明 - `setting`: 重设的设置信息,是一系列键值对,键表示设置的 id,值表示设置的值,例如`{ 'mySetting1.mySetting2': 123 }` - 方法说明 该方法用于重设设置,一般用于初始化设置信息 ## register() ```ts // overload 1 declare function register( key: string, name: string, value: number, com?: SettingComponent, step?: [number, number, number] ): this // overload 2 declare function register( key: string, name: string, value: boolean | MotaSetting, com?: SettingComponent ): this ``` - 用法一 - 参数说明 - `key`: 要注册的设置名称,也就是 id,不能包含 `.` - `name`: 设置的显示名称 - `value`: 设置的初始值(默认值) - `com`: 设置的编辑组件,也就是右侧设置说明下方的内容 - `step`: 步长信息,是一个数组,第一项表示最小值,第二项表示最大值,第三项表示单步步长 - 方法说明 该用法用于注册一个数字型设置 - 用法二 - 参数说明 - `key`: 要注册的设置名称,也就是 id,不能包含 `.` - `name`: 设置的显示名称 - `value`: 设置的初始值(默认值),或者是级联设置 - `com`: 设置的编辑组件,也就是右侧设置说明下方的内容 - 方法说明 该用法用于注册一个布尔型变量,或者是级联设置。当 `value` 传递一个设置实例的时候,会认为是级联设置 ## getSetting() ```ts declare function getSetting(key: string): Readonly ``` - 参数说明 - `key`: 设置的键名,对于级联设置,使用 `.` 进行连接,例如 `mySetting1.mySetting2` - 返回值 该函数返回获取到的设置,如果没有获取到设置,会抛出错误。获取的返回值理论上(在 ts 下)是只读的,不允许修改。 - 方法说明 该方法用于获取到一个设置 ## setValue() ```ts declare function setValue(key: string, value: boolean | number): void ``` - 方法说明 该方法用于设置一个设置的值,接受设置键名,以及要设置为的值为参数。 - 示例 ```js mySetting.setValue('mySetting1.mySetting2', 200); ``` ## addValue() ```ts declare function addValue(key: string, value: number): void ``` - 方法说明 该方法用于增减一个数字型设置的值,其中 `value` 表示增减的多少 - 示例 ```js mySetting.addValue('mySetting1.mySetting2', 100); // 增加100,减少100可以填-100 ``` ## getValue() ```ts declare function getValue( key: string, defaultValue?: boolean | number ): boolean | number ``` - 参数说明 - `key`: 设置的键名 - `defaultValue`: 当设置或设置的值不存在,或者设置是一个级联设置时,返回的默认值 - 方法说明 用于获取一个设置的值,当设置或设置的值不存在,或者设置是一个级联设置时,会返回默认值 ## setDisplayFunc() ```ts declare function setDisplayFunc( key: string, func: (value: boolean | number) => string ): this ``` - 参数说明 - `key`: 设置的键名 - `func`: 显示函数,接受当前设置的值作为参数,返回一个字符串作为显示值 - 示例 ```js mySetting.setDisplayFunc('mySetting1.mySetting2', value => value ? '宝石' : '血瓶'); ``` ## setValueController() ```ts declare function setValueController(key: string, com: SettingComponent): this ``` - 参数说明 - `key`: 设置的键名 - `com`: 要设置成的编辑组件,以函数式组件为宜 ## setDescription() ```ts declare function setDescription(key: string, desc: string): this ``` - 参数说明 - `key`: 设置的键名 - `desc`: 要设置成的描述信息,允许 html 元素的出现 ## noStorage ```ts declare var noStorage: string[] ``` - 静态成员说明 该成员描述了所有不计入本地存储的样板自带设置的键名 - 示例 ```js MotaSetting.noStorage.push('mySetting'); ``` ## valueChange 事件 ```ts interface MotaSettingEvent { valueChange: ( key: string, newValue: T, oldValue: T ) => void } ``` - 事件说明 当设置的值被设置时触发该事件,传入设置的键名、新值、旧值作为参数