Skip to content
BagModule

拓展 / BagModule

BagModule Class

背包实例

背包系统就像你在玩游戏时使用的一个特殊的背包,可以帮助你管理和存放各种物品和资源。MW编辑器已经封装好了一个可以直接使用的背包系统。

你的角色在游戏中收集了很多宝贵的物品,比如武器、装备、药品、材料等等。这些物品都需要一个地方来储存,而背包系统就是一个虚拟的背包,可以容纳这些物品。

它就是一个游戏中的特殊工具,帮助你整理、存储和管理你在游戏中收集到的各种物品和资源,让你的游戏体验更加方便和有序。

使用示例:创建一个名为BagExample的脚本,放置在对象栏中,打开脚本,将原本内容修改为如下内容,保存并运行游戏
ts
@Component
export default class BagExample extends Script {
   protected onStart(): void {
      BagModule.registerItem(1,"37692","金铲铲",ItemQuality.Legend,10,{a:1,b:2});
      BagModule.registerItem(2,"37690","小喇叭",ItemQuality.Legend,10,{a:1,b:2});
      BagModule.registerItem(3,"37697","金币",ItemQuality.Legend,10,{a:1,b:2});
      BagModule.registerItem(4,"37695","南瓜",ItemQuality.Common,20,{a:1,b:2});
      if(SystemUtil.isClient()){
          BagModule.addItemClickListener(this.onItemClick,this);
          BagModule.addItem(1,1);
          BagModule.addItem(2,5);
          BagModule.addItem(3,10);
          BagModule.addItem(4,30);
          BagModule.open();
      }
   }
   private onItemClick(cfg:ItemConfig){
      console.log("点击了",cfg);
   }
}
@Component
export default class BagExample extends Script {
   protected onStart(): void {
      BagModule.registerItem(1,"37692","金铲铲",ItemQuality.Legend,10,{a:1,b:2});
      BagModule.registerItem(2,"37690","小喇叭",ItemQuality.Legend,10,{a:1,b:2});
      BagModule.registerItem(3,"37697","金币",ItemQuality.Legend,10,{a:1,b:2});
      BagModule.registerItem(4,"37695","南瓜",ItemQuality.Common,20,{a:1,b:2});
      if(SystemUtil.isClient()){
          BagModule.addItemClickListener(this.onItemClick,this);
          BagModule.addItem(1,1);
          BagModule.addItem(2,5);
          BagModule.addItem(3,10);
          BagModule.addItem(4,30);
          BagModule.open();
      }
   }
   private onItemClick(cfg:ItemConfig){
      console.log("点击了",cfg);
   }
}

Table of contents

Accessors

capacity(): number client
背包容量
dragEnabled(): boolean client
是否可以拖拽
labelVisible(): boolean client
物品名称是否可见
searchEnabled(): boolean client
是否显示搜索框

Methods

addItem(itemId: number, count?: number, player?: Player): Promise<number>
添加道具
addItemClickListener(clickCallback: (cfg: ItemConfig) => void, thisObject: any): typeof BagModule client
增加道具点击回调
close(player?: Player): typeof BagModule
关闭背包界面
getItemCount(itemId: number, player?: Player): number
获取背包指定道具数量
open(player?: Player): typeof BagModule
打开背包界面
registerItem(itemId: number, icon: string, name: string, quality?: ItemQuality, stackCount?: number, customData?: any): typeof BagModule
背包注册道具信息,道具需要在客户端注册
removeItem(itemId: number, count?: number, player?: Player): typeof BagModule
删除道具
removeItemClickListener(clickCallback: (cfg: ItemConfig) => void, thisObject: any): typeof BagModule client
移除道具点击回调
skin(bagSkin: (...args: any[]) => IBagSkin, itemSkin: (...args: any[]) => IBagItemSkin, itemBgSkin: (...args: any[]) => UIScript, deleteDialogSkin: (...args: any[]) => IItemDeleteSkin): typeof BagModule client
设置背包皮肤
sort(): typeof BagModule client
整理背包

Accessors

capacity

Static get capacity(): number client

Static set capacity(capacity): void client

背包容量

Returns

number背包容量

背包容量

Parameters

capacity number背包容量
range: [1,128]

dragEnabled

Static get dragEnabled(): boolean client

Static set dragEnabled(isDragable): void client

是否可以拖拽

Returns

boolean返回是否可以拖拽

是否可以拖拽

Parameters

isDragable boolean是否可以拖拽

labelVisible

Static get labelVisible(): boolean client

Static set labelVisible(isLabelVisible): void client

物品名称是否可见

Returns

boolean返回物品名称是否可见

物品名称是否可见

Parameters

isLabelVisibleboolean

searchEnabled

Static get searchEnabled(): boolean client

Static set searchEnabled(isSearchEnabled): void client

是否显示搜索框

Returns

boolean返回是否显示搜索框

是否显示搜索框

Parameters

isSearchEnabled boolean是否显示搜索框

Methods

addItem

Static addItem(itemId, count?, player?): Promise<number>

添加道具

Parameters

itemId number道具ID
range: 不做限制 type: 整数
count? number道具数量 default:1
range: 不做限制 type: 整数
player? Player道具所有者 default:服务端必传入

Returns

Promise<number>返回添加的道具数量,如果添加失败则返回0
使用示例:创建一个BagExample脚本并拖入对象管理器中,添加以下代码,运行项目
ts
@Component
export default class BagExample extends Script {
   protected onStart(): void {
      BagModule.registerItem(1,"37692","金铲铲",ItemQuality.Legend,10,{a:1,b:2});
      if (SystemUtil.isServer()) return;
      BagModule.addItem(1).then((count:number)=>{
         console.log("添加道具数量",count);
      });
      BagModule.open();
   }
@Component
export default class BagExample extends Script {
   protected onStart(): void {
      BagModule.registerItem(1,"37692","金铲铲",ItemQuality.Legend,10,{a:1,b:2});
      if (SystemUtil.isServer()) return;
      BagModule.addItem(1).then((count:number)=>{
         console.log("添加道具数量",count);
      });
      BagModule.open();
   }

addItemClickListener

Static addItemClickListener(clickCallback, thisObject): typeof BagModule client

增加道具点击回调

Parameters

clickCallback (cfg: ItemConfig) => void点击回调
thisObject any调用上下文

Returns

typeof BagModule返回背包实例

close

Static close(player?): typeof BagModule

关闭背包界面

Parameters

player? Player服务端调用时需要传入player default:服务端必传入

Returns

typeof BagModule返回背包实例

getItemCount

Static getItemCount(itemId, player?): number

获取背包指定道具数量

Parameters

itemId number道具ID
range: 根据道具ID确定 type: 整数
player? Player服务端传入,打开指定玩家的背包 default:服务端必传入

Returns

number返回背包实例

open

Static open(player?): typeof BagModule

打开背包界面

Parameters

player? Player背包的所有者 default:服务端填写,客户端不填写

Returns

typeof BagModule返回背包实例

registerItem

Static registerItem(itemId, icon, name, quality?, stackCount?, customData?): typeof BagModule

背包注册道具信息,道具需要在客户端注册

Parameters

itemId number道具ID
range: 根据道具ID确定 type: 整数
icon string道具图片
range: 不做限制
name string名称
range: 不做限制
quality? ItemQuality道具品质-默认普通 default:ItemQuality.Common
stackCount? number堆叠数量 default:1
range: 不做限制 type: 整数
customData? any额外数据 default:null

Returns

typeof BagModule返回背包实例
使用示例:创建一个BagExample脚本并拖入对象管理器中,添加以下代码

这样就注册了4个道具,然后通过BagModule.addItem添加对应ID在背包中就可以看到这4个道具了

ts
@Component
export default class BagExample extends Script {

    protected onStart(): void {
        BagModule.registerItem(1,"37692","金铲铲",ItemQuality.Legend,10,{a:1,b:2});
        BagModule.registerItem(2,"37690","小喇叭",ItemQuality.Legend,10,{a:1,b:2});
        BagModule.registerItem(3,"37697","金币",ItemQuality.Legend,10,{a:1,b:2});
        BagModule.registerItem(4,"37695","南瓜",ItemQuality.Common,20,{a:1,b:2});
    }
}
@Component
export default class BagExample extends Script {

    protected onStart(): void {
        BagModule.registerItem(1,"37692","金铲铲",ItemQuality.Legend,10,{a:1,b:2});
        BagModule.registerItem(2,"37690","小喇叭",ItemQuality.Legend,10,{a:1,b:2});
        BagModule.registerItem(3,"37697","金币",ItemQuality.Legend,10,{a:1,b:2});
        BagModule.registerItem(4,"37695","南瓜",ItemQuality.Common,20,{a:1,b:2});
    }
}

removeItem

Static removeItem(itemId, count?, player?): typeof BagModule

删除道具

Parameters

itemId number道具ID
range: 根据道具ID确定 type: 整数
count? number道具数量 default:1
range: 不做限制 type: 整数
player? Player道具所有者,服务端必传入 default:服务端必传入

Returns

typeof BagModule返回背包实例

removeItemClickListener

Static removeItemClickListener(clickCallback, thisObject): typeof BagModule client

移除道具点击回调

Parameters

clickCallback (cfg: ItemConfig) => void点击回调
thisObject any调用上下文

Returns

typeof BagModule返回背包实例

skin

Static skin(bagSkin, itemSkin, itemBgSkin, deleteDialogSkin): typeof BagModule client

设置背包皮肤

Parameters

bagSkin (...args: any[]) => IBagSkin背包UI皮肤,null为默认皮肤
itemSkin (...args: any[]) => IBagItemSkin背包Item皮肤,null为默认皮肤
itemBgSkin (...args: any[]) => UIScript背包Item背景皮肤,null为默认皮肤
deleteDialogSkin (...args: any[]) => IItemDeleteSkin背包Item删除弹窗皮肤,null为默认皮肤

Returns

typeof BagModule返回背包实例
使用示例:

1.在项目中创建一个UI,名为BagUI,拖入以下控件 closeBtn: mw.StaleButton; content: mw.Canvas; filterBox: mw.InputBox; filterCanvas: mw.Canvas; 2.导出UI,将导出的UI文件BagUI_Generate拷贝到JavaScripts文件夹,重命名为BagSkin,并修改extends为BagUI 创建一个名为BagExample的脚本,放置在对象栏中,打开脚本,将原本内容修改为如下内容,保存并运行游戏 3.其他UI皮肤同理

ts
@Component
export default class BagExample extends Script {

    protected onStart(): void {
        if (!SystemUtil.isServer()) return;
        BagModule.skin(BagSkin, null, null, null);
        BagModule.open();
    }
}
@Component
export default class BagExample extends Script {

    protected onStart(): void {
        if (!SystemUtil.isServer()) return;
        BagModule.skin(BagSkin, null, null, null);
        BagModule.open();
    }
}

sort

Static sort(): typeof BagModule client

整理背包

Returns

typeof BagModule返回背包实例