meta data for this page
📚 差别
这里会显示出您选择的修订版和当前版本之间的差别。
| 两侧同时换到之前的修订记录前一修订版后一修订版 | 前一修订版 | ||
| scripting:world:prop [2023/09/21 01:19] – bibiboxs | scripting:world:prop [2025/08/03 02:06] (当前版本) – bibiboxs | ||
|---|---|---|---|
| 行 2: | 行 2: | ||
| # World/Prop | # World/Prop | ||
| - | `Prop`类是一个抽象概念类,主要用于**Prop背包物品及[游戏道具](extend/ | + | `Prop`类是一个抽象**数据结构**,主要用于**Prop背包物品及[游戏道具](extend/ |
| - | 此类下所有的属性均是以**抽象概念**为基础的,具体物品的逻辑实现由开发者自行编写*(例如物品磨损、武器子弹数量等)*。 | + | 此类下所有的属性均是以**抽象概念**为基础的,具体物品的**逻辑实现**由开发者自行编写(例如物品磨损、武器子弹数量等)。 |
| + | |||
| + | > 修改`Prop`数据结构时需要注意,其本身是一个引用的结构类型,因此直接修改属性将无法生效,应该使用以下方法: | ||
| + | > | ||
| + | > ```javascript | ||
| + | > let tempProp = XXX; //source | ||
| + | > tempProp.Speed = 2; | ||
| + | > XXX = tempProp; //set source to new | ||
| + | > ``` | ||
| 行 16: | 行 24: | ||
| ```javascript | ```javascript | ||
| prop.ID: int | prop.ID: int | ||
| + | ``` | ||
| + | |||
| + | |||
| + | |||
| + | ### prop.Model | ||
| + | |||
| + | > 获取物品对应**模型ID**(只读)。 | ||
| + | |||
| + | ```javascript | ||
| + | prop.Model: int | ||
| + | ``` | ||
| + | |||
| + | |||
| + | |||
| + | ### prop.ChildModel | ||
| + | |||
| + | > 获取物品对应的**子模型ID**(只读)。 | ||
| + | > | ||
| + | > **例如:投掷道具发生投掷效果时的对象模型ID。** | ||
| + | |||
| + | ```javascript | ||
| + | prop.ChildModel: | ||
| ``` | ``` | ||
| 行 171: | 行 201: | ||
| ```javascript | ```javascript | ||
| prop.Speed = 1.0; //float | prop.Speed = 1.0; //float | ||
| + | ``` | ||
| + | |||
| + | |||
| + | |||
| + | ### prop.MoveSpeedMultiplier | ||
| + | |||
| + | > 设置物品**移动速度影响倍数**属性,这将直接影响角色手持物品时移动速度。 | ||
| + | |||
| + | ```javascript | ||
| + | prop.MoveSpeedMultiplier = 1.0; //float | ||
| ``` | ``` | ||
| 行 187: | 行 227: | ||
| - | ### prop.Multiple | + | ### prop.Stack |
| - | > 获取物品最大叠加数量(只读),默认值为`1`,**数值来源于物品json配置**。 | + | > 设置物品最大叠加数量,默认值为`1`。 |
| > | > | ||
| > 此属性主要用于实现**高级背包系统**,可能某些物品允许叠加存放(例如苹果),**但武器这些属性复杂的物品,可能并不适合叠加存放**。 | > 此属性主要用于实现**高级背包系统**,可能某些物品允许叠加存放(例如苹果),**但武器这些属性复杂的物品,可能并不适合叠加存放**。 | ||
| ```javascript | ```javascript | ||
| - | prop.Multiple: int | + | prop.Stack = 1; //int |
| + | ``` | ||
| + | |||
| + | |||
| + | |||
| + | ### prop.Level | ||
| + | |||
| + | > 设置物品品质等级,默认值为`0`,限制范围`0~4`。 | ||
| + | > | ||
| + | > 此属性主要用于实现**高级背包系统**,不同等级默认没有实际功能区别,此部分需要开发者自行扩展。 | ||
| + | |||
| + | ```javascript | ||
| + | prop.Level = 0; | ||
| + | ``` | ||
| + | |||
| + | |||
| + | |||
| + | ## Static Function | ||
| + | |||
| + | ### Prop.None() | ||
| + | |||
| + | > 创建**空白道具**实例结构。 | ||
| + | |||
| + | ```javascript | ||
| + | function Prop.None(): | ||
| + | ``` | ||
| + | |||
| + | |||
| + | |||
| + | ### Prop.Create() | ||
| + | |||
| + | > 创建**新的道具**实例结构。 | ||
| + | |||
| + | ```javascript | ||
| + | function Prop.Create( id: int, amount: int = 1, level: int = 0, data: any = null ): Prop | ||
| + | ``` | ||
| + | |||
| + | |||
| + | |||
| + | ### Prop.SetSourceData() | ||
| + | |||
| + | > 设置**指定游戏道具**默认原始数据(重写),建议**场景初始化**时使用。 | ||
| + | > | ||
| + | > 注意:此方法**不会更新**已生成的对象,除非手动运行`prop.ResetData()`。 | ||
| + | |||
| + | ```javascript | ||
| + | function Prop.SetSourceData( prop: int, keyPath: string, value: any ) | ||
| + | ``` | ||
| + | |||
| + | ```javascript | ||
| + | SetSourceData(277, | ||
| + | ``` | ||
| + | |||
| + | |||
| + | |||
| + | ### Prop.GetSourceData() | ||
| + | |||
| + | > 获取**指定游戏道具**最新数据,如果未被`SetSourceData`重写过,则返回原始数据。 | ||
| + | |||
| + | ```javascript | ||
| + | function Prop.GetSourceData( prop: int, keyPath: string ): any | ||
| + | ``` | ||
| + | |||
| + | |||
| + | |||
| + | ### Prop.ResetSourceData() | ||
| + | |||
| + | > 重置**指定游戏道具**修改数据,恢复使用原始数据。 | ||
| + | > | ||
| + | > 注意:此方法**不会更新**已生成的对象,除非手动运行`prop.ResetData()`。 | ||
| + | |||
| + | ```javascript | ||
| + | function Prop.ResetSourceData( prop: int ) | ||
| + | ``` | ||
| + | |||
| + | |||
| + | |||
| + | ### Prop.ResetAllSourceData() | ||
| + | |||
| + | > 重置**全部游戏道具**修改数据,恢复使用原始数据。 | ||
| + | > | ||
| + | > 注意:此方法**不会更新**已生成的对象,除非手动运行`prop.ResetData()`。 | ||
| + | |||
| + | ```javascript | ||
| + | function Prop.ResetAllSourceData() | ||
| ``` | ``` | ||
| 行 204: | 行 328: | ||
| > 获取物品是否包含指定Flag特性。 | > 获取物品是否包含指定Flag特性。 | ||
| - | > | + | |
| + | [note2] | ||
| + | 关于`Flag`的增删查改参考[《游戏道具扩展——Flag属性》](extend/ | ||
| + | [/note] | ||
| ```javascript | ```javascript | ||
| 行 229: | 行 356: | ||
| function prop.RemoveFlag( flag: int ) | function prop.RemoveFlag( flag: int ) | ||
| ``` | ``` | ||
| + | |||
| + | |||
| + | |||
| + | ### prop.Equals() | ||
| + | |||
| + | > 判断另一物品是否等同于自身引用(是否为相同对象)。 | ||
| + | |||
| + | ```javascript | ||
| + | function prop.Equals( other: Prop ) | ||
| + | ``` | ||
| + | |||
| + | |||
| + | |||
| + | ### prop.ResetData() | ||
| + | |||
| + | > 重置当前物品的**默认属性**,通常用于`SetSourceData()`方法使用后的**立即更新**。 | ||
| + | |||
| + | ```javascript | ||
| + | function prop.ResetData() | ||
| + | ``` | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||