meta data for this page
  •  

📚 差别

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

到此差别页面的链接

后一修订版
前一修订版
scripting:world:entity [2023/08/12 16:28] – 创建 bibiboxsscripting:world:entity [2025/07/12 04:19] (当前版本) bibiboxs
行 18: 行 18:
 ## Property ## Property
  
-### entity.AnyData+### entity.Is...
  
-预支的自类型属性,供开发者自行使,需要自行做好类型Type和生命周期处理+判断当前实例是否为指`Entity`类型。 
 +
 +> *此功能可用来判断当前实例是何种类型(角色、载具等……)*
  
 ```javascript ```javascript
-entity.AnyData = null; //any+function entity.Is...; //bool 
 +function entity.IsCharacter; //bool 
 +function entity.IsVehicle; //bool 
 +function entity.IsPickup; //bool 
 +function entity.IsCheckpoint; //bool 
 +function entity.IsModel; //bool 
 +``` 
 + 
 + 
 + 
 +### entity.As... 
 + 
 +> 尝试转换当前实例为指定`Entity`类型。 
 + 
 +```javascript 
 +function entity.As...; //... 
 +function entity.AsCharacter; //Character 
 +function entity.AsVehicle; //Vehicle 
 +function entity.AsPickup; //Pickup 
 +function entity.AsCheckpoint; //Checkpoint 
 +function entity.AsModel; //Model 
 +``` 
 + 
 + 
 + 
 +### entity.Data 
 + 
 +> 内置的自定义类型属性(建议使用基础类型),可供开发者自行使用,需要自行做好类型Type和生命周期处理。 
 + 
 +```javascript 
 +entity.Data = null; //any
 ``` ```
  
行 31: 行 63:
 }; };
  
-entity.AnyData = myData;+entity.Data = myData; 
 +``` 
 + 
 + 
 + 
 +### entity.UniqueID 
 + 
 +> 获取当前实例**当前场景唯一ID标识**(`>0`),且数字不会重复。 
 + 
 +```javascript 
 +entity.UniqueID: int 
 +``` 
 + 
 + 
 + 
 +### entity.Tag 
 + 
 +> 设置当前实例的标签\记录文本,没有实际功能作用,仅供识别和分类,默认为空字符。 
 +
 + 
 +```javascript 
 +entity.Tag = ""; //string 
 +``` 
 + 
 + 
 + 
 +### 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(): bool
 +```
 +
 +```javascript
 +let chara = Character.Create(0, Vector(90, 1, 58), 0);
 +
 +DLog(chara.IsValid()); //返回true,对象状态正常
 +
 +chara.Remove(); //Remove Character
 +
 +DLog(chara); //正常返回,实例虽然销毁,但引用仍然存在,不为null
 +DLog(chara.IsValid()); //返回false,因为已经被销毁了,不应该再使用了
 +```
 +
 +
  
 ### entity.GetType() ### entity.GetType()
  
-> 获取当前实例的类型名称(文本),标准文本参考本文顶部表格。+> 获取当前实例的类型名称(文本),**标准文本**参考本文顶部表格。
 > >
 > *此功能可用来判断当前实例是何种类型(角色、载具等……)。* > *此功能可用来判断当前实例是何种类型(角色、载具等……)。*
行 55: 行 159:
  
 ```javascript ```javascript
-function player.GetInstance(): Entity //返回:基类或派生类+function entity.GetInstance(): Entity //返回:基类或派生类
 ``` ```
 +
 +```javascript
 +let myCharacter = Character.Create(...);
 +myCharacter.GetInstance(); //返回:Character类,举一反三
 +```
 +
 +
 +
 +### 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()
 +```
 +
 +
 +
 +
 +
  
  
  
 </markdown> </markdown>