meta data for this page
📚 差别
这里会显示出您选择的修订版和当前版本之间的差别。
后一修订版 | 前一修订版 | ||
scripting:world:entity [2023/08/12 16:28] – 创建 bibiboxs | scripting:world:entity [2025/07/12 04:19] (当前版本) – bibiboxs | ||
---|---|---|---|
行 18: | 行 18: | ||
## Property | ## Property | ||
- | ### entity.AnyData | + | ### entity.Is... |
- | > 预支的自定义类型属性,可供开发者自行使用,需要自行做好类型Type和生命周期处理。 | + | > 判断当前实例是否为指定`Entity`类型。 |
+ | > | ||
+ | > *此功能可用来判断当前实例是何种类型(角色、载具等……)。* | ||
```javascript | ```javascript | ||
- | entity.AnyData | + | function |
+ | function entity.IsCharacter; | ||
+ | function entity.IsVehicle; | ||
+ | function entity.IsPickup; | ||
+ | function entity.IsCheckpoint; | ||
+ | function entity.IsModel; | ||
+ | ``` | ||
+ | |||
+ | |||
+ | |||
+ | ### entity.As... | ||
+ | |||
+ | > 尝试转换当前实例为指定`Entity`类型。 | ||
+ | |||
+ | ```javascript | ||
+ | function entity.As...; | ||
+ | function entity.AsCharacter; | ||
+ | function entity.AsVehicle; | ||
+ | function entity.AsPickup; | ||
+ | function entity.AsCheckpoint; | ||
+ | function entity.AsModel; | ||
+ | ``` | ||
+ | |||
+ | |||
+ | |||
+ | ### entity.Data | ||
+ | |||
+ | > 内置的自定义类型属性(建议使用基础类型),可供开发者自行使用,需要自行做好类型Type和生命周期处理。 | ||
+ | |||
+ | ```javascript | ||
+ | entity.Data | ||
``` | ``` | ||
行 31: | 行 63: | ||
}; | }; | ||
- | entity.AnyData | + | entity.Data = myData; |
+ | ``` | ||
+ | |||
+ | |||
+ | |||
+ | ### entity.UniqueID | ||
+ | |||
+ | > 获取当前实例**当前场景唯一ID标识**(`> | ||
+ | |||
+ | ```javascript | ||
+ | entity.UniqueID: | ||
+ | ``` | ||
+ | |||
+ | |||
+ | |||
+ | ### entity.Tag | ||
+ | |||
+ | > 设置当前实例的标签\记录文本,没有实际功能作用,仅供识别和分类,默认为空字符。 | ||
+ | > | ||
+ | |||
+ | ```javascript | ||
+ | entity.Tag = ""; | ||
+ | ``` | ||
+ | |||
+ | |||
+ | |||
+ | ### entity.Group | ||
+ | |||
+ | > 设置当前实例的对象组,不同的继承子类有不同的意义。 | ||
+ | > | ||
+ | > `Group == 0`表示特殊通用组(默认值),如果需要实现同组的实例交互,请将双方`Group`设置成非0的任何相同的数字。 | ||
+ | |||
+ | ```javascript | ||
+ | entity.Group = 0; //int | ||
+ | ``` | ||
+ | |||
+ | |||
+ | |||
+ | ### entity.Scale | ||
+ | |||
+ | > 设置当前实例的整体缩放尺寸,当前除`Model`类型特别处理外(`Model.Scale`),其他类型均基于节点进行缩放,没有过多缩放适配,因此可能部分行为(因为尺寸改变)不会按照预期执行。 | ||
+ | > | ||
+ | > 注意:由于不同对象的实际模型尺寸可能不同,部分过于夸张的尺寸可能导致崩溃。 | ||
+ | |||
+ | [note2] | ||
+ | 注意:除特别类型外,属性限制范围为`0.01 ~ 5.0`。 | ||
+ | [/note] | ||
+ | |||
+ | ```javascript | ||
+ | entity.Scale = Vector(1, 1, 1); //Vector | ||
``` | ``` | ||
行 37: | 行 118: | ||
## Function | ## Function | ||
+ | |||
+ | ### entity.IsValid() | ||
+ | |||
+ | > 获取当前实例**是否真实存在且有效**,**否则表示实例已经销毁**,只是GC没有及时回收垃圾。 | ||
+ | > | ||
+ | > 对于所有基于`Entity`的类型,建议判断**是否有效**时额外判断`IsValid()`,因为有时可能引用不为`null`,但实际上对象已经销毁(此时不应该再使用此对象,否则可能会引起异常)。 | ||
+ | |||
+ | ```javascript | ||
+ | function entity.IsValid(): | ||
+ | ``` | ||
+ | |||
+ | ```javascript | ||
+ | let chara = Character.Create(0, | ||
+ | |||
+ | DLog(chara.IsValid()); | ||
+ | |||
+ | chara.Remove(); | ||
+ | |||
+ | DLog(chara); | ||
+ | DLog(chara.IsValid()); | ||
+ | ``` | ||
+ | |||
+ | |||
### entity.GetType() | ### entity.GetType() | ||
- | > 获取当前实例的类型名称(文本),标准文本参考本文顶部表格。 | + | > 获取当前实例的类型名称(文本),**标准文本**参考本文顶部表格。 |
> | > | ||
> *此功能可用来判断当前实例是何种类型(角色、载具等……)。* | > *此功能可用来判断当前实例是何种类型(角色、载具等……)。* | ||
行 55: | 行 159: | ||
```javascript | ```javascript | ||
- | function | + | function |
``` | ``` | ||
+ | |||
+ | ```javascript | ||
+ | let myCharacter = Character.Create(...); | ||
+ | myCharacter.GetInstance(); | ||
+ | ``` | ||
+ | |||
+ | |||
+ | |||
+ | ### entity.IsSameGroup() | ||
+ | |||
+ | > 验证某个`Entity`或`GroupID`是否与当前实例匹配(相同)。 | ||
+ | > | ||
+ | > isForce:强制模式(只有两者Group相等且不为0(特殊组)返回`true`,否则不作强制非0判断) | ||
+ | |||
+ | ```javascript | ||
+ | function entity.IsSameGroup( isForce: bool = true ): bool | ||
+ | ``` | ||
+ | |||
+ | |||
+ | |||
+ | ### entity.GetVisualRange() | ||
+ | |||
+ | > 获取实体相对于**服务器主机& | ||
+ | > | ||
+ | > 此方法允许提交一个`true`参数,可用于立即刷新结果,通常可以忽略。 | ||
+ | |||
+ | [note2] | ||
+ | 注意:此方法的服务器版本与客户端版本稍有不同,服务器版本下如果有任何玩家仍在范围内,则会始终返回`true`。 | ||
+ | |||
+ | 反之亦然,如果服务器版本下返回`false`,表示此实体当前没有在任何玩家的渲染流范围内。 | ||
+ | [/note] | ||
+ | |||
+ | ```javascript | ||
+ | function entity.GetVisualRange( update: bool = false ): int | ||
+ | ``` | ||
+ | |||
+ | | Index | 说明 | ||
+ | | ----- | -------------------------------- | | ||
+ | | -1 | 不可见(停止渲染和处理复杂计算) | | ||
+ | | 0 | 可见范围内(完全渲染及计算) | ||
+ | | 1 | 可见范围内,但距离较远 | ||
+ | |||
+ | |||
+ | |||
+ | ### entity.Shake() | ||
+ | |||
+ | > 执行实体对象的摇动动画效果(不会叠加),*此方法包含一个客户端同名的本地方法。* | ||
+ | > | ||
+ | > **注意:此方法会在执行完毕后复位,因此应该仅用于静态的对象,而非移动中的对象(例如:砍树等)。** | ||
+ | |||
+ | ```javascript | ||
+ | function entity.Shake( type: int, duration: float = 0.5, strength: float = 0.1, vibrato: float = 10, randomness: int = 90 ) | ||
+ | ``` | ||
+ | |||
+ | - `type`:0=位置 1=旋转 2=缩放 3=组合 | ||
+ | - `duration`:持续时间(秒) | ||
+ | - `strength`:强度 | ||
+ | - `vibrato`:频率 | ||
+ | - `randomness`:随机度(默认`0~180`) | ||
+ | |||
+ | |||
+ | |||
+ | ### entity.StopShake() | ||
+ | |||
+ | > 停止执行实体对象的摇动动画效果。 | ||
+ | |||
+ | ```javascript | ||
+ | function entity.StopShake() | ||
+ | ``` | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
</ | </ |