meta data for this page
  •  

📚 差别

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

到此差别页面的链接

两侧同时换到之前的修订记录前一修订版
后一修订版
前一修订版
scripting:world:player [2025/08/02 23:17] bibiboxsscripting:world:player [2025/08/29 15:50] (当前版本) bibiboxs
行 12: 行 12:
 ### OnPlayerJoin( player ) ### OnPlayerJoin( player )
  
-> 当新玩家加入主机房间时调用。+> 当新玩家**加入主机**时调用,此事件通常较少使用。
 > >
-==注意:此时玩家只是连接成功,并非加载完成,完整加载使用`OnPlayerComplete`。==+> 注意:此时玩家只是连接成功,并非加载完成,完整加载使用`OnPlayerComplete`。
  
  
行 20: 行 20:
 ### OnPlayerComplete( player ) ### OnPlayerComplete( player )
  
-> 当玩家完全加载完成时调用。+> 当玩家**完全加载**时调用。
 > >
-==此事件是获取玩家完全载入状态正确方法==+通常情况下,应该使用此事件作为玩家的**入口事件**
  
  
行 28: 行 28:
 ### OnPlayerPart ( player, reason ) ### OnPlayerPart ( player, reason )
  
-> 当玩家离开房间时调用。+> 当玩家**离开主机**时调用。 
 +>  
 +> 注意:如果玩家是主机,且直接关闭游戏进程时,此方法可能**不会按照预期**工作
  
 - **Reason:**离开原因(int)(0=断开连接;1=被服务器踢出;2=被服务器封禁) - **Reason:**离开原因(int)(0=断开连接;1=被服务器踢出;2=被服务器封禁)
行 38: 行 40:
 > 当玩家发送消息时调用。 > 当玩家发送消息时调用。
 > >
-> 此事件有返回值机制,如果返回为`false`则不使用内置的聊天输出机制不会输出任何消息),默认返回`true`。+> 此事件有**返回值机制**,如果返回为`false`则不使用内置的聊天输出(不会输出任何消息),默认返回`true`。
 > >
-*如果有自定义输出聊天样式需求,可以通过`return 0`然后使用`Message("[color#=ff0000]"+player.Name+":"+text)`等方式实现自定义*+> 如果有**自定义聊天样式**需求,可以通过`return 0`然后使用`Message("[color#=ff0000]"+player.Name+":"+text)`等方式实现。
 > >
-**注意:沙盘引擎默认聊天消息经过了`Native.FormatRichText()`格式化,这将使文本支持[URL\@AT\Emoji]等高亮显示,如果有自定义Chat需求并希望支持这些功能,可以在手动发送Message前使用API格式化一次。**+> 注意:默认聊天消息经过了`Native.FormatRichText()`格式化,这将使文本支持`[URL\@AT\Emoji]`等高亮显示,如果有自定义输出需求并希望支持这些功能,可以在手动发送Message前使用API格式化一次。** 
 + 
 +[note] 
 +游戏聊天框默认支持`UBB|HTML`格式的消息,如果不希望玩家随意使用,可以通过`Misc.IsUBBText()`或其他方式检测文本,并决定哪些内容允许被发送。 
 +[/note]
  
 ```javascript ```javascript
行 268: 行 274:
 | ---- | -------------------- | | ---- | -------------------- |
 | 0    | 标准版(Demo\Steam) | | 0    | 标准版(Demo\Steam) |
-| 1    | 白金版(Steam+DLC)      |+| 1    | 白金版(Steam+DLC)  |
  
  
行 284: 行 290:
 | ---- | ------------------------------------- | | ---- | ------------------------------------- |
 | 0    | 本地用户,非Steam用户(可能非安全的) | | 0    | 本地用户,非Steam用户(可能非安全的) |
-| 1    | Steam用户(标准版\白金版)        |+| 1    | Steam用户(标准版\白金版)            |
  
  
行 328: 行 334:
 > >
 > **注意:如果世界被修改时玩家绑定的`Character`已存在,那么将同步`Character`修改为新的World,并且不会解除绑定控制。如果不希望这样,可以提前`player.SetEntity(null)`解除绑定,再修改World。** > **注意:如果世界被修改时玩家绑定的`Character`已存在,那么将同步`Character`修改为新的World,并且不会解除绑定控制。如果不希望这样,可以提前`player.SetEntity(null)`解除绑定,再修改World。**
-+>
 > **==注意:`player.UniqueWorld`的机制是`10000 + player.ID`,因此应该避免手动将世界设置为`10000`及以上的数值。==** > **==注意:`player.UniqueWorld`的机制是`10000 + player.ID`,因此应该避免手动将世界设置为`10000`及以上的数值。==**
  
行 340: 行 346:
  
 > 获取玩家**私人同步世界ID**,此项与`player.World`功能相似,不同的是,如果将某个对象设置为`player.UniqueWorld`,则指定对象只有此玩家可见,哪怕此玩家仍然在默认世界(0)。 > 获取玩家**私人同步世界ID**,此项与`player.World`功能相似,不同的是,如果将某个对象设置为`player.UniqueWorld`,则指定对象只有此玩家可见,哪怕此玩家仍然在默认世界(0)。
-+>
 > **==注意:`player.UniqueWorld`的机制是`10000 + player.ID`,因此应该避免手动将世界设置为`10000`及以上的数值。==** > **==注意:`player.UniqueWorld`的机制是`10000 + player.ID`,因此应该避免手动将世界设置为`10000`及以上的数值。==**
  
行 374: 行 380:
  
 > 获取玩家绑定的实体对象(角色)。 > 获取玩家绑定的实体对象(角色)。
 +
 +> 此方法也可以设置赋值对象(等同于`player.SetEntity(value, true)`,默认执行`isBind`)。
  
 ```javascript ```javascript
行 394: 行 402:
  
 > 设置玩家**是否为管理员**,管理员可通过`TAB`菜单进行基础的玩家管理。 > 设置玩家**是否为管理员**,管理员可通过`TAB`菜单进行基础的玩家管理。
-+>
 > 通常情况下,此属性是一个验证管理员权限的**预制抽象属性**,开发者可考虑自行编写更高级的管理员系统。 > 通常情况下,此属性是一个验证管理员权限的**预制抽象属性**,开发者可考虑自行编写更高级的管理员系统。
 +
 +> 如果服务器由**本地主机**建立,主机玩家会自动激活此属性。
  
 ```javascript ```javascript
行 450: 行 460:
  
 > 获取玩家**视角焦点实体检测距离**,此数值直接影响`FocusEntity`的检测结果,默认距离为`3.0`(`0.0~512.0`)。 > 获取玩家**视角焦点实体检测距离**,此数值直接影响`FocusEntity`的检测结果,默认距离为`3.0`(`0.0~512.0`)。
-+>
 > **注意:对于远距离视角、鸟瞰视角等情况,应该在合理范围内调高此数值,否则可能距离过短导致无法正确检测。** > **注意:对于远距离视角、鸟瞰视角等情况,应该在合理范围内调高此数值,否则可能距离过短导致无法正确检测。**
  
行 577: 行 587:
 ```javascript ```javascript
 player.CameraMode: int player.CameraMode: int
-``` 
- 
- 
- 
-### player.AudioReverbInternal 
- 
-> 设置玩家的音频混响模式(建筑内部),枚举索引参考[《AudioReverbPreset》](https://docs.unity.cn/cn/current/ScriptReference/AudioReverbPreset.html "《AudioReverbPreset》")。 
-> 
- 
-```javascript 
-player.AudioReverbInternal = 3; //Room 
-``` 
- 
- 
- 
-### player.AudioReverbExternal 
- 
-> 设置玩家的音频混响模式(默认,建筑外部),枚举索引参考[《AudioReverbPreset》](https://docs.unity.cn/cn/current/ScriptReference/AudioReverbPreset.html "《AudioReverbPreset》")。 
-> 
- 
-```javascript 
-player.AudioReverbExternal = 16; //Forest 
 ``` ```
  
行 932: 行 920:
  
  
-### player.RunTask()+### player.RunTaskAction()
  
-> 为玩家执行一次**倒计时任务**(例如拆除炸弹+UI进度条),每个玩家同一时间只能执行一个任务+> 为玩家执行一次**倒计时任务**(UI进度条+倒计时),每个玩家**同一时间**只能执行一个任务
  
 ```javascript ```javascript
-function player.RunTask( time: float, title: string, onComplete: Action, theme: int = 0 )+function player.RunTaskActiontag: string, time: float, title: string, onComplete: Action, theme: int = 0 )
 ``` ```
  
-**`theme`:**范围0~4,表示不同的颜色+`tag`识别标签,仅供参考记录 
 +- `time`倒计时时间(秒) 
 +- `title`文本标题(支持宏文本) 
 +`theme`范围0~4,表示不同的颜色
  
 ```javascript ```javascript
-player.RunTask(5, "正在安装C4...", () => { +player.RunTaskAction("install", 5, "Installation in progress...", () => { 
-    //C4 Setup+    //OnComplete
 }); });
 ``` ```
行 950: 行 941:
  
  
-### player.StopTask()+### player.StopTaskAction()
  
 > 停止玩家**倒计时任务**。 > 停止玩家**倒计时任务**。
  
 ```javascript ```javascript
-function player.StopTask()+function player.StopTaskAction()
 ``` ```
  
  
  
-### player.AddGuider()+### player.UpdateTaskActionData()
  
-玩家建立一个指引目标(屏幕边缘箭头),允许附加指引文字(支持宏文本)。 +更新玩家**倒计时任务**信息
-+
-> 补充:指引有3种不同的样式选择(`0, 1, 2`)+
  
 ```javascript ```javascript
-function player.AddGuiderindexinttarget: any, style: int = 0, text: string = "", autoDestroy: bool = false +function player.UpdateTaskActionDatatitlestringtheme: int = -1 
-/* +```
- index:指引索引(如索引已存在指引,将会替换修改,一个index只能存在并表示一个指引实例),相当于一个标签作用 +
- target:目标对象(可以是Vector|Entity等类型,分别表示静态坐标与动态跟随目标) +
- style:指引样式 +
- text:指引文字 +
- autoDestroy:到达指引目标附近是否自动移除指引,默认为false +
-*/+
  
-//通常情况下,如果同时只使用1个指引功能,只需要一直将index填写0即可 +- `title`文本标题(支持宏文本) 
-```+`theme`颜色主题,默认`-1`不进行修改
  
  
  
-### player.RemoveGuider()+### player.GetTaskActionTag()
  
-玩家移除一个指引目(屏幕边缘箭头)+获取玩家**倒计时任务**
  
 ```javascript ```javascript
-function player.RemoveGuiderindex: int )+function player.GetTaskActionTag(): string
 ``` ```
  
  
  
-### player.ExistGuider()+### player.ExistTaskAction()
  
-> 获取玩家**指定索引**的指引实例是否存在。+> 获取玩家**倒计时任务**是否**存在**并进行中
  
 ```javascript ```javascript
-function player.ExistGuiderindex: int ): bool+function player.ExistTaskAction(): bool
 ``` ```
  
行 1167: 行 1150:
  
 - `return`:是否正常返回(如果没有临时物品,也会返回`true`) - `return`:是否正常返回(如果没有临时物品,也会返回`true`)
 +
 +
 +
 +
 +