# 附加属性系统
# 一、介绍
附加属性意即:附加于背包物品(或业务方自定义物品)上的属性,可以是血量、级别、防御等自定义的属性,与现有的属性系统区分开
该模块则提供了查询物品附加属性的接口,以及升级对应属性的接口
# 二、使用
// 先在头部引入附加属性模块
import { attachedAttributeSystem } from "@timi/mogs-sdk";
1
2
2
1. 获取背包中物品的附加属性
引入该模块后,会自动为背包中的物品实例附加***attachedAttributes***字段,可直接读取,无需通过调用接口,
const backpackItem = getBackpackItem(); // 取得背包物品的伪代码
const attachedAttributes = backpackItem.attachedAttributes;
attachedAttributes.forEach((item, key) => {
console.log('属性id:', key);
console.log('属性数值:', item.value);
console.log('升级消耗物品:', item.upgradePreview.consumptions);
});
1
2
3
4
5
6
7
2
3
4
5
6
7
注意:由于后台设定的属性升级配置表中没有包含属性信息(如:属性名称、***属性icon***等)的字段,所以该模块目前只能提供属性id,业务方需自行维护属性id与对应属性信息的关联
2. 获取自定义物品的附加属性
业务方自行维护的自定义物品,虽不在背包中,但仍可通过属性升级配置表为物品配置附加属性和升级规则
const attachedAttributes = attachedAttributeSystem.getAttachedAttributes({
itemId: 123456, // 这个ID是业务方自定义物品的ID
itemType: 3 // 属性升级配置表中的目标类型
});
attachedAttributes.forEach((item, key) => {
console.log('属性id:', key);
console.log('属性数值:', item.value);
console.log('升级消耗物品:', item.upgradePreview.consumptions);
});
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
3. 升级属性
const bloodAttribute = attachedAttributes.get(9527); // 假设某个物品的血量属性id是9527
await bloodAttribute.upgrade(); // 升级属性
1
2
2
4. 监听附加属性变化
attachedAttributeSystem.onAttachedAttributeChange((e) => {
console.log('发生变化的物品id:', e.itemId);
console.log('发生变化的属性id:', e.attributeId);
console.log('变化之前的属性数值:', e.previousValue.value);
console.log('当前的属性数值:', e.currentValue.value);
})
1
2
3
4
5
6
2
3
4
5
6