meta data for this page
  •  

📚 差别

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

到此差别页面的链接

后一修订版
前一修订版
scripting:world:pickup [2023/07/30 20:57] – 创建 bibiboxsscripting:world:pickup [2025/08/16 06:04] (当前版本) bibiboxs
行 1: 行 1:
 <markdown> <markdown>
 # World/Pickup # World/Pickup
 +> 注意:`Pickup`仅允许`Character`类型主动触发,如果`Character`正在驾驶\乘坐载具,则会在载具进入触发范围时**所有载具内角色**触发相关事件。
  
 ## Event ## Event
行 6: 行 7:
 ### OnPickupEntered( pickup,  character )  ### OnPickupEntered( pickup,  character ) 
  
-> 当角色进入拾取物范围时触发,角色同一时间只能触发个拾取物。+> 当角色进入拾取物范围时触发,角色同一时间触发个拾取物(如果在范围内)
 > >
 +
 +```javascript
 +function OnPickupEntered( pickup, character )
 +{
 + DLog("OnPickupEntered: " + pickup.ID);
 +
 + switch(pickup.ID)
 + {
 + case 0:
 + //直接销毁拾取物
 + pickup.Remove();
 +            
 +            //doSomething...
 + break;
 + case 1:
 + //“拿取”其中的模型,但不会重新生成,直到调用Respawn()
 + pickup.Collect();
 +
 + //“拿取”其中的模型,并等待10秒后重新生成
 + //重新生成后,将会重新调用OnPickupPickedUp
 + pickup.Collect(10.0);
 +            
 +            //doSomething...
 + break;
 + case 2:
 + //不执行针对拾取物的操作,一直存在
 + DLog("Pickup!");
 +            
 +            //doSomething...
 + break;
 + }
 +}
 +```
  
  
行 15: 行 49:
 > 当角色离开拾取物范围时触发。 > 当角色离开拾取物范围时触发。
 > >
 +
 +```javascript
 +function OnPickupExited( pickup, character )
 +{
 + DLog("OnPickupExited: " + pickup.ID);
 +}
 +```
  
  
行 34: 行 75:
 ### pickup.UUID ### pickup.UUID
  
-> 获取拾取物UUID,这是由一串较长的字符串组成的全局唯一**文本ID**。+> 获取拾取物UUID,这是由一串较长的字符串组成的全局唯一**文本ID**(实例化时自动赋值,非持久化数据)
  
 ```javascript ```javascript
行 42: 行 83:
  
  
-## Function+### pickup.Pos 
 + 
 +> 设置拾取物坐标。 
 + 
 +```javascript 
 +pickup.Pos = Vector(0, 0, 0); 
 +``` 
 + 
 + 
 + 
 +### pickup.World 
 + 
 +> 设置拾取物实例世界ID(不同世界将不可视\不可交互)。 
 + 
 +```javascript 
 +pickup.World = 0; //int 
 +``` 
 + 
 + 
 + 
 +### pickup.Group 
 + 
 +> 设置拾取物**实例组**(这是一个Entity基类通用属性)。 
 +
 +> 默认值`0`表示特殊组(无分组机制),如实例组不为0,则只有相同组的拾取物和对象才会触发。 
 + 
 +```javascript 
 +pickup.Group = 0; //int 
 +``` 
 + 
 + 
 + 
 +### pickup.Type 
 + 
 +> 设置拾取物实例光环类型,如设置为-1则不显示光环(类似模型直接在地上),类型样式参考[《世界资源实例汇总》](reference/instances)。 
 + 
 +```javascript 
 +pickup.Type = 1; //int 
 +``` 
 + 
 + 
 + 
 +### pickup.Model 
 + 
 +> 设置拾取物实例模型,如设置为`-1`则不显示任何模型。 
 + 
 +```javascript 
 +pickup.Model = 413; //int 
 +``` 
 + 
 + 
 +### pickup.ModelEnum 
 + 
 +> 设置拾取物实例模型的`Enum`属性(`Model.Enum`)。 
 +>  
 +> 此属性是一个兼容链接属性,不一定适合所有模型使用。 
 + 
 +```javascript 
 +pickup.ModelEnum = 0?; //int, Not a fixed default 
 +``` 
 + 
 + 
 + 
 +### pickup.ModelScale 
 + 
 +> 设置拾取物实例模型的缩放尺寸(比例),默认为`1.0`。 
 + 
 +```javascript 
 +pickup.ModelScale = 1.0; 
 +``` 
 + 
 + 
 + 
 +### pickup.Color 
 + 
 +> 设置拾取物实例包围颜色,默认为`Color(0, 0, 0, 0)`,不修改则使用`Type`默认的样式颜色。 
 + 
 +```javascript 
 +pickup.Color = Color(255, 255, 255); 
 +``` 
 + 
 + 
 + 
 +### pickup.Text 
 + 
 +> 设置拾取物标签文本(头部文字),支持富文本代码。 
 + 
 +```javascript 
 +pickup.Text = ""; //string 
 +``` 
 + 
 + 
 + 
 +### pickup.IsLoopTrigger 
 + 
 +> 设置拾取物是否可持续拾取,默认为`true`,否则当拾取后`Respawn()`后,需要重新触碰拾取物才可再次触发。 
 +
 +> 当此属性设置为`true`时,重生(Respawn)后将会再次调用`OnPickupEntered`事件。 
 + 
 +```javascript 
 +pickup.IsLoopTrigger = true; 
 +``` 
 + 
 + 
 + 
 +### pickup.IsCollected 
 + 
 +> 读取拾取物“被拾取”状态(只读)。 
 +
 +> 此属性返回值与`Collect\Respawn`方法有关。 
 + 
 +```javascript 
 +pickup.IsCollected: bool 
 +``` 
 + 
 + 
 + 
 +### pickup.OccupantCount 
 + 
 +> 获取拾取物当前正在触发的角色单位数量,此功能通常搭配`pickup.GetOccupant()`使用。 
 + 
 +```javascript 
 +pickup.OccupantCount: int 
 +``` 
 + 
 + 
 + 
 +## Static Function
  
 ### Pickup.Create() ### Pickup.Create()
  
 +> 生成一个新的拾取物实例,`Type`类型样式参考[《世界资源实例汇总》](reference/instances)。
  
 +```javascript
 +function Pickup.Create( type: int, model: int, pos: Vector, color: Color = null ): Pickup
 +```
  
 +```javascript
 +//在0点坐标处,建立一个类型为5,模型为413(出租车)的默认颜色拾取物实例
 +Pickup.Create(5, 413, Vector(0, 0, 0));
  
 +//在0点坐标处,建立一个类型为5,模型为413(出租车)的红色(RGB[255,0,0])拾取物实例
 +Pickup.Create(5, 413, Vector(0, 0, 0), Color(255, 0, 0));
 +```
 +
 +
 +
 +### Pickup.Find()
 +
 +> 寻找一个拾取物实例(通过ID),不存在则返回`null`。
 +
 +```javascript
 +function Pickup.Find( id: int ): Pickup
 +```
 +
 +
 +
 +### Pickup.FindByUUID()
 +
 +> 寻找一个拾取物实例(通过UUID),不存在则返回`null`。
 +
 +```javascript
 +function Pickup.Find( uuid: string ): Pickup
 +```
 +
 +
 +
 +### Pickup.GetCount()
 +
 +> 获取当前所有存在拾取物数量。
 +
 +```javascript
 +function Pickup.GetCount(): int
 +```
 +
 +
 +
 +### Pickup.Get()
 +
 +> 获取当前存在的指定索引拾取物,通常搭配`GetCount()`遍历使用。
 +
 +```javascript
 +function Pickup.Get( index: int ): Pickup
 +```
 +
 +
 +
 +## Function
  
 ### pickup.Remove() ### pickup.Remove()
行 55: 行 277:
  
 ```javascript ```javascript
-function pickup.Remove()+function pickup.Remove( hasAnim: bool = true )
 ``` ```
 +
 +- `hasAnim`是否执行销毁动画(默认`true`),否则立即销毁
  
  
行 67: 行 291:
  
 ```javascript ```javascript
-function pickup.Collect(respawnTime: float = 0)+function pickup.Collect( respawnTime: float = 0 )
 ``` ```
  
行 89: 行 313:
 function pickup.Respawn() function pickup.Respawn()
 ``` ```
 +
 +
 +
 +### pickup.GetOccupant()
 +
 +> 获取当前拾取物实例正在触发的(指定索引)角色实例。
 +
 +```javascript
 +function pickup.GetOccupant( index: int ): Character
 +```
 +
 +```javascript
 +//遍历获取正在触发的所有角色
 +let occCount = pickup.OccupantCount;
 +for(let i=0;i<occCount;i++)
 +{
 + DLog(pickup.GetOccupant(i).Name + "正在拾取物中...");
 +}
 +```
 +
 +
 +
 +
 +
 +
 +
 +