meta data for this page
📚 差别
这里会显示出您选择的修订版和当前版本之间的差别。
两侧同时换到之前的修订记录前一修订版后一修订版 | 前一修订版 | ||
scripting:world:entity [2023/09/02 00:44] – bibiboxs | scripting:world:entity [2025/07/12 04:19] (当前版本) – bibiboxs | ||
---|---|---|---|
行 18: | 行 18: | ||
## Property | ## Property | ||
- | ### entity.AnyData | + | ### entity.Is... |
- | > 内置的自定义类型属性,可供开发者自行使用,需要自行做好类型Type和生命周期处理。 | + | > 判断当前实例是否为指定`Entity`类型。 |
+ | > | ||
+ | > *此功能可用来判断当前实例是何种类型(角色、载具等……)。* | ||
+ | |||
+ | ```javascript | ||
+ | function entity.Is...; | ||
+ | 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 | ```javascript | ||
- | entity.AnyData | + | entity.Data = null; //any |
``` | ``` | ||
行 31: | 行 63: | ||
}; | }; | ||
- | entity.AnyData | + | entity.Data = myData; |
``` | ``` | ||
- | ### entity.Outline | + | ### entity.UniqueID |
- | > 设置当前实体对象描边效果开关(**所有人可见**模式)。 | + | > 获取当前实例**当前场景唯一ID标识**(`>0`),且数字不会重复。 |
+ | |||
+ | ```javascript | ||
+ | entity.UniqueID: | ||
+ | ``` | ||
+ | |||
+ | |||
+ | |||
+ | ### entity.Tag | ||
+ | |||
+ | > 设置当前实例的标签\记录文本,没有实际功能作用,仅供识别和分类,默认为空字符。 | ||
> | > | ||
- | > 此属性修改不影响`OutlineTarget`功能,如果拥有**玩家单独绑定**时,此属性改变将**不会优先生效**。 | ||
```javascript | ```javascript | ||
- | entity.Outline | + | entity.Tag = "" |
``` | ``` | ||
- | ### entity.OutlineColor | + | ### entity.Group |
- | > 设置当前实体对象的描边效果颜色代码(**所有人可见**模式生效)。 | + | > 设置当前实例的对象组,不同的继承子类有不同的意义。 |
> | > | ||
- | > 默认支持三个颜色(`0=白色;1=绿色;2=红色`)。 | + | > `Group == 0`表示特殊通用组(默认值),如果需要实现同组的实例交互,请将双方`Group`设置成非0的任何相同的数字。 |
+ | |||
+ | ```javascript | ||
+ | entity.Group | ||
+ | ``` | ||
+ | |||
+ | |||
+ | |||
+ | ### entity.Scale | ||
+ | |||
+ | > 设置当前实例的整体缩放尺寸,当前除`Model`类型特别处理外(`Model.Scale`),其他类型均基于节点进行缩放,没有过多缩放适配,因此可能部分行为(因为尺寸改变)不会按照预期执行。 | ||
> | > | ||
- | > 此属性当某个玩家被设置`OutlineTarget`时,将不会再受到此处颜色改变影响。 | + | > 注意:由于不同对象的实际模型尺寸可能不同,部分过于夸张的尺寸可能导致崩溃。 |
+ | |||
+ | [note2] | ||
+ | 注意:除特别类型外,属性限制范围为`0.01 ~ 5.0`。 | ||
+ | [/note] | ||
```javascript | ```javascript | ||
- | entity.OutlineColor | + | entity.Scale = Vector(1, 1, 1); //Vector |
``` | ``` | ||
行 63: | 行 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() | ||
行 91: | 行 169: | ||
- | ### entity.OutlineTargetTo() | + | ### entity.IsSameGroup() |
- | > 为某个玩家单独设置描边效果,优先权最高(无论是否`Outline == true`)。 | + | > 验证某个`Entity`或`GroupID`是否与当前实例匹配(相同)。 |
> | > | ||
- | > 通过此方法设定任意玩家后,相当于激活了白名单描边模式,只有在**“白名单列表”里的玩家**才会继续可见描边。 | + | > isForce:强制模式(只有两者Group相等且不为0(特殊组)返回`true`,否则不作强制非0判断) |
- | > | + | |
- | > 如果希望恢复**所有人可见**模式,需要**确保没有任何玩家被单独设置描边**,例如使用`OutlineTargetOutAll()`清除所有描边绑定。 | + | |
```javascript | ```javascript | ||
- | function entity.OutlineTargetTo( player: Player, color: int = 0 ) | + | function entity.IsSameGroup( isForce: bool = true ): bool |
- | /* | + | |
- | player:指定玩家实例 | + | |
- | color:颜色ID代码,可以为不同玩家设定不同的颜色 | + | |
- | */ | + | |
``` | ``` | ||
- | ### entity.OutlineTargetOut() | + | ### entity.GetVisualRange() |
- | > 为某个玩家移除单独描边效果。 | + | > 获取实体相对于**服务器主机& |
> | > | ||
- | > 如果当前已经没有任何玩家被单独设置描边,则自动恢复**所有人可见**模式。 | + | > 此方法允许提交一个`true`参数,可用于立即刷新结果,通常可以忽略。 |
+ | |||
+ | [note2] | ||
+ | 注意:此方法的服务器版本与客户端版本稍有不同,服务器版本下如果有任何玩家仍在范围内,则会始终返回`true`。 | ||
+ | |||
+ | 反之亦然,如果服务器版本下返回`false`,表示此实体当前没有在任何玩家的渲染流范围内。 | ||
+ | [/note] | ||
```javascript | ```javascript | ||
- | function | + | function |
``` | ``` | ||
+ | | Index | 说明 | ||
+ | | ----- | -------------------------------- | | ||
+ | | -1 | 不可见(停止渲染和处理复杂计算) | | ||
+ | | 0 | 可见范围内(完全渲染及计算) | ||
+ | | 1 | 可见范围内,但距离较远 | ||
- | ### entity.OutlineTargetOutAll() | ||
- | > 移除当前实体所有单独描边绑定,自动恢复到**所有人可见**模式。 | + | ### entity.Shake() |
+ | |||
+ | > 执行实体对象的摇动动画效果(不会叠加),*此方法包含一个客户端同名的本地方法。* | ||
+ | > | ||
+ | > **注意:此方法会在执行完毕后复位,因此应该仅用于静态的对象,而非移动中的对象(例如:砍树等)。** | ||
```javascript | ```javascript | ||
- | function | + | function |
``` | ``` | ||
+ | - `type`:0=位置 1=旋转 2=缩放 3=组合 | ||
+ | - `duration`:持续时间(秒) | ||
+ | - `strength`:强度 | ||
+ | - `vibrato`:频率 | ||
+ | - `randomness`:随机度(默认`0~180`) | ||
- | ### entity.GetOutlineTargetColor() | ||
- | > 获取指定玩家单独描边绑定的颜色,如果不存在绑定则返回`-1`。 | + | ### entity.StopShake() |
+ | |||
+ | > 停止执行实体对象的摇动动画效果。 | ||
```javascript | ```javascript | ||
- | function | + | function |
``` | ``` | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
</ | </ |