Skip to content

什么是道具实例

道具实例是存在于格子上的道具数据,它是从道具模板创建的。每个道具实例都有自己的属性,这些属性可以在游戏中被修改或更新。

目前暂时只有模型组件和枪械组件支持道具实例的相关功能。使用创建道具实例的接口来创建,道具实例会带有模型组件相关属性;使用创建枪械道具实例的接口来创建,道具实例会带有模型组件和枪械组件的相关属性。

使用道具实例功能,可以制作出枪械修改等玩法。

创建道具实例

序号函数名函数描述
1CreateItemInstInBackpack(...)在玩家的背包内创建一个道具实例
2CreateGunInBackpack(...)在玩家的背包内创建一把实例化的枪械
3CreateItemInstInWorld(...)在位置上创建道具实例的掉落物
4CreateGunInWorld(...)在位置上创建枪械道具实例的掉落物

获取道具实例或ID

序号函数名函数描述
1GetDropItemInstanceId(...)根据掉落物objid获取道具实例id
2GetItemIdByInstanceId(...)根据道具实例ID获取道具ID
3GetResIdByInstanceId(...)根据道具实例ID获取预制ID
4GetAllBackPackInstanceIds(...)获取指定背包中所有道具实例
5GetInstIdByGridIndex(...)根据背包索引获取道具实例id
6GetGunInstIdInBackpack(...)获取背包所有实例化的枪械
7GetAllStorageItemInstanceIds(...)获取储物箱里所有的道具实例(只取通过接口创建的道具实例)
8GetStorageItemInstanceId(...)获取储物箱内指定格子的道具实例ID

获取和修改道具实例属性

序号函数名函数描述
1ModifyGunAttribute(...)修改枪械道具实例的属性
2GetGunAttribute(...)获取枪械道具实例的属性
3GetGunPrefabAttribute(...)获取枪预制的属性
4GetItemIdByInstanceId(...)根据道具实例ID获取道具ID
5GetResIdByInstanceId(...)根据道具实例ID获取预制ID
6AddSubModelPart(...)给道具实例添加一个模型子部件
7DeleteSubModelPart(...)删除一个道具实例的模型子部件
8ReplaceSubModelPart(...)修改一个道具实例的模型子部件
9SetStringCustomData(...)设置道具实例的自定义数据string
10SetBoolCustomData(...)设置道具实例的自定义数据bool
11SetNumberCustomData(...)设置道具实例的自定义数据number
12SetObjCustomData(...)设置道具实例的自定义数据Object
13SetArrayCustomData(...)设置道具实例的自定义数据Array
14GetStringCustomData(...)获取道具实例的自定义数据string
15GetBoolCustomData(...)获取道具实例的自定义数据bool
16GetNumberCustomData(...)获取道具实例的自定义数据number
17GetObjCustomData(...)获取道具实例的自定义数据Object
18GetArrayCustomData(...)获取道具实例的自定义数据Array

在界面模型装载器上显示道具实例的模型

SetLoaderModel

  • 参数及类型:
  • 返回值及类型:
    • ret:bool是否成功
  • 该方法的主要作用: 设置装载器的模型(调用道具实例的模型:模型名称填ItemInstance_道具实例id)
  • 具体使用案例如下:
    local isSuccess = CustomUI:SetLoaderModel(Player:GetHostUin(),"7482986899365911542-22886","7482986899365911542-22886_5", "ItemInstance_15864891562")

注意

格子数据同步问题:道具实例的数据是存在于背包格子上的,修改了格子数据后,会按照一定的时间间隔同步。如果修改格子数据后立刻通知客机刷新界面,则会出现客机还没收到同步数据就刷新的情况,会导致客机显示模型没变化。解决办法是修改格子数据后等待一小会,例如0.5秒,再通知客机刷新界面。