meta data for this page
  •  

📚 差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

两侧同时换到之前的修订记录前一修订版
后一修订版
前一修订版
scripting:world:prop [2023/09/21 01:19] bibiboxsscripting:world:prop [2025/08/03 02:06] (当前版本) bibiboxs
行 2: 行 2:
 # World/Prop # World/Prop
  
-`Prop`类是一个抽象概念类,主要用于**Prop背包物品及[游戏道具](extend/prop)**相关功能使用。+`Prop`类是一个抽象**数据结构**,主要用于**Prop背包物品及[游戏道具](extend/prop)**相关功能使用。
  
-此类下所有的属性均是以**抽象概念**为基础的,具体物品的逻辑实现由开发者自行编写*(例如物品磨损、武器子弹数量等)*+此类下所有的属性均是以**抽象概念**为基础的,具体物品的**逻辑实现**由开发者自行编写(例如物品磨损、武器子弹数量等)。 
 + 
 +> 修改`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: int
 ``` ```
  
行 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 
 +``` 
 + 
 + 
 + 
 +### 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, "Stack", 100); //set prop 277 stack to 100 
 +``` 
 + 
 + 
 + 
 +### 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/prop "《游戏道具扩展——Flag属性》")。 
 +[/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()
 +```
 +
 +
 +
 +
 +
 +
 +
 +