沙盘引擎 (SEngine)

创意诞生沙盘世界,不止如此想象!

用户工具

站点工具


scripting:world:prop

📚 差别

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

到此差别页面的链接

后一修订版
前一修订版
scripting:world:prop [2023/09/11 22:30] – 创建 bibiboxsscripting:world:prop [2024/09/05 12:48] (当前版本) bibiboxs
行 2: 行 2:
 # World/Prop # World/Prop
  
-`Prop`类是一个抽象概念类,主要用于`Character`与Prop背包物品相关功能使用。+`Prop`类是一个抽象概念类,主要用于**Prop背包物品及[游戏道具](extend/prop)**相关功能使用。
  
-此类下所有的属性均是以**抽象概念**为基础的,具体物品的逻辑实现由开发者自行编写(例如物品磨损、武器子弹等)。+此类下所有的属性均是以**抽象概念**为基础的,具体物品的逻辑实现由开发者自行编写*(例如物品磨损、武器子弹数量等)*
  
  
行 16: 行 16:
 ```javascript ```javascript
 prop.ID: int prop.ID: int
 +```
 +
 +
 +
 +### prop.Model
 +
 +> 获取物品对应**模型ID**(只读)。
 +
 +```javascript
 +prop.Model: int
 +```
 +
 +
 +
 +### prop.ChildModel
 +
 +> 获取物品对应的**子模型ID**(只读)。
 +>
 +> **例如:投掷道具发生投掷效果时的对象模型ID。**
 +
 +```javascript
 +prop.ChildModel: int
 ``` ```
  
行 22: 行 44:
 ### prop.UUID ### prop.UUID
  
-> 获取物品场景唯一UUID(只读),此属性用来判断物品对象归属,即使索引位置发生改变。+> 获取物品场景唯一UUID(只读),可判断物品原始对象**即使物品索引位置发生改变**
  
 ```javascript ```javascript
 prop.UUID: string prop.UUID: string
 +```
 +
 +
 +
 +### prop.Name
 +
 +> 获取物品注册名称,来源于配置文件(只读)。
 +
 +```javascript
 +prop.Name: string
 +```
 +
 +
 +
 +### prop.Tag
 +
 +> 获取物品注册标签,来源于配置文件(只读)。
 +
 +```javascript
 +prop.Tag: string
 ``` ```
  
行 33: 行 75:
  
 > 设置物品同类叠加数量,默认值为`1`,上限值根据`Multiple`决定(源于json配置)。 > 设置物品同类叠加数量,默认值为`1`,上限值根据`Multiple`决定(源于json配置)。
 +>
 +> **注意:如果物品数量`<=0`时将==立即被回收==,变换为默认空物品(`ID0`)。**
  
 ```javascript ```javascript
行 42: 行 86:
 ### prop.Data ### prop.Data
  
-> 设置物品自定义属性(Any)。+> 设置物品**自定义属性(Any)**,绝大多数自定义扩展属性都由此实现
  
 ```javascript ```javascript
 prop.Data = {}; //any prop.Data = {}; //any
 +```
 +
 +```javascript
 +//实现一个武器子弹功能
 +let chara = Character.Create(...);
 +
 +//两种方式相同,建议优先考虑第一种
 +[1] chara.SetProp(0, 3, 1, {Bullet: 1000});
 +[2] chara.SetProp(0, 3, 1);
 + chara.Prop.Data.Bullet = 1000;
 +
 +//子弹功能属性实现完成,下面实现【子弹检测逻辑】
 +function OnCharacterPropActionBefore( character, prop )
 +{
 +    if(prop.Data.Bullet != null)
 +    {
 +        if(prop.Data.Bullet > 0) prop.Data.Bullet --;
 +        else{
 +            //子弹不足
 +            return 0; //阻止武器继续使用
 +        }
 +    }
 +}
 +```
 +
 +**补充:尽管在`JavaScript`里允许使用例如`chara.Prop.BulletXXX`这种直接字段赋值的方式,但考虑到生命周期和GC的问题,建议优先使用示例中的推荐做法(`prop.Data.XXX`)。**
 +
 +
 +
 +## Value Property
 +
 +> Prop类在根类本身的基础上,额外提供一些与**[【游戏道具原始数据】](extend/prop)同名映射的动态属性**,此类属性可实现**运行时动态修改物品数据(如伤害、范围、射速等)**,==属性详细用途及介绍参考**[【游戏道具原始数据】](extend/prop)**==。
 +>
 +> **注意:此部分仅支持Prop基础属性,例如高级`Flags、Animation、Audio`这些暂不支持运行时动态调整。**
 +
 +
 +
 +### prop.Damage
 +
 +> 设置物品**伤害值\基础伤害值**属性。
 +
 +```javascript
 +prop.Damage = 0; //int
 +```
 +
 +
 +
 +### prop.DamageRange
 +
 +> 设置物品**伤害检测范围**属性。
 +
 +```javascript
 +prop.DamageRange = 0.8; //float
 +```
 +
 +
 +
 +### prop.DamageShake
 +
 +> 设置物品**伤害检测范围偏移**属性。
 +
 +```javascript
 +prop.DamageShake = 1.0; //float
 +```
 +
 +
 +
 +### prop.Distance
 +
 +> 设置物品**距离相关**属性,通常情况下**非特定类型物品(如:枪支)**应该保持默认。
 +
 +```javascript
 +prop.Distance = 0.0; //float
 +```
 +
 +
 +
 +### prop.Direction
 +
 +> 设置物品**手持方向**属性。
 +
 +```javascript
 +prop.Direction = 2; //int
 +```
 +
 +
 +
 +### prop.PreloadTime
 +
 +> 设置物品**切换武器冷却时间(无法使用时间)**属性。
 +
 +```javascript
 +prop.PreloadTime = 1.0; //float
 +```
 +
 +
 +
 +### prop.Speed
 +
 +> 设置物品**动作\执行速度**属性,**此属性关键决定执行动作的速度,对于大多数物品来说,动作速度越快,同时间内能执行的次数越多(例如热武器射速)**。
 +
 +```javascript
 +prop.Speed = 1.0; //float
 +```
 +
 +
 +
 +### prop.MoveSpeedMultiplier
 +
 +> 设置物品**移动速度影响倍数**属性,这将直接影响角色手持物品时移动速度。
 +
 +```javascript
 +prop.MoveSpeedMultiplier = 1.0; //float
 +```
 +
 +
 +
 +### prop.Flags
 +
 +> 获取物品**枚举特性**属性(位特性),**建议只读(或不要直接使用)此属性,不要直接操作修改,除非知道自己在做什么**。
 +>
 +> **补充:如果有修改需求,请使用`Flags`相关的Function方法。**
 +
 +```javascript
 +prop.Flags: int
 ``` ```
  
行 54: 行 223:
 > 获取物品最大叠加数量(只读),默认值为`1`,**数值来源于物品json配置**。 > 获取物品最大叠加数量(只读),默认值为`1`,**数值来源于物品json配置**。
 > >
-> 此属性主要用于实现**高级背包系统**,可能某些物品允许叠加存放(例如苹果),但武器这些属性复杂,可能并不适合叠加存放。+> 此属性主要用于实现**高级背包系统**,可能某些物品允许叠加存放(例如苹果),**但武器这些属性复杂的物品,可能并不适合叠加存放**
  
 ```javascript ```javascript
-character.Multiple: int+prop.Multiple: int
 ``` ```
 +
 +
 +
 +## Function
 +
 +### prop.ExistFlag()
 +
 +> 获取物品是否包含指定Flag特性。
 +
 +[note2]
 +关于`Flag`的增删查改参考[《游戏道具扩展——Flag属性》](extend/prop "《游戏道具扩展——Flag属性》")。
 +[/note]
 +
 +```javascript
 +function prop.ExistFlag( flag: int ): bool
 +```
 +
 +
 +
 +### prop.AddFlag()
 +
 +> 给物品增加指定的Flag特性(如果是**不允许动态增删的Flag或者已包含**,则不会被增加)。
 +
 +```javascript
 +function prop.AddFlag( flag: int )
 +```
 +
 +
 +
 +### prop.RemoveFlag()
 +
 +> 给物品移除指定的Flag特性(如果是**不允许动态增删的Flag或者不包含**,则不会被移除)。
 +
 +```javascript
 +function prop.RemoveFlag( flag: int )
 +```
 +
 +
 +
 +
 +
 +
 +
  
  
 </markdown> </markdown>
scripting/world/prop.1694442659.txt.gz · 最后更改: 2023/09/11 22:30 由 bibiboxs