---
sidebarDepth: 1
---
# 零件PartBase
## 概述
- 继承关系
```mermaid
classDiagram
SdkInterface <|-- PartBase
link SdkInterface "../../../../mcdocs/3-PresetAPI/%E9%A2%84%E8%AE%BE%E5%AF%B9%E8%B1%A1/%E9%80%9A%E7%94%A8/SDK%E6%8E%A5%E5%8F%A3%E5%B0%81%E8%A3%85SdkInterface.html"
TransformObject <|-- PartBase
link TransformObject "../../../../mcdocs/3-PresetAPI/%E9%A2%84%E8%AE%BE%E5%AF%B9%E8%B1%A1/%E9%80%9A%E7%94%A8/%E5%8F%98%E6%8D%A2%E5%AF%B9%E8%B1%A1TransformObject.html"
GameObject <|-- TransformObject
link GameObject "../../../../mcdocs/3-PresetAPI/%E9%A2%84%E8%AE%BE%E5%AF%B9%E8%B1%A1/%E9%80%9A%E7%94%A8/%E6%B8%B8%E6%88%8F%E5%AF%B9%E8%B1%A1GameObject.html"
PartBase: 零件
SdkInterface: SDK接口封装
SdkInterface: (点击跳转)
TransformObject: 变换对象
TransformObject: (点击跳转)
GameObject: 游戏对象
GameObject: (点击跳转)
```
- 描述
PartBase(零件基类)是可以与零件进行绑定,而零件可以挂接在预设下,以实现带逻辑的预设的组装。所有的自定义零件都需要继承PartBase,预设系统下的大部分代码都需要写在自定义零件中。注意,自定义零件只有挂接到预设,并且在游戏中实例化才能生效。
- 成员变量
| 变量名 |
数据类型
| 说明 |
| :--- | :--- | :--- |
| tickEnable | str | 是否启用零件tick |
| replicated | list | 启用网络复制的字段列表 |
## 索引
| 接口 | | 描述 |
| --- | --- | --- |
| [InitClient](#initclient) | 客户端 | 客户端的零件对象初始化入口 |
| [InitServer](#initserver) | 服务端 | 服务端的零件对象初始化入口 |
| [TickClient](#tickclient) | 客户端 | 客户端的零件对象逻辑驱动入口 |
| [TickServer](#tickserver) | 服务端 | 服务端的零件对象逻辑驱动入口 |
| [UnloadClient](#unloadclient) | 客户端 | 客户端的零件对象卸载逻辑入口 |
| [UnloadServer](#unloadserver) | 服务端 | 服务端的零件对象卸载逻辑入口 |
| [DestroyClient](#destroyclient) | 客户端 | 客户端的零件对象销毁逻辑入口 |
| [DestroyServer](#destroyserver) | 服务端 | 服务端的零件对象销毁逻辑入口 |
| [CanAdd](#canadd) | 客户端/服务端 | 判断零件是否可以挂接到指定的父节点上 |
| [GetTickCount](#gettickcount) | 客户端/服务端 | 获取当前帧数 |
| [LogDebug](#logdebug) | 客户端/服务端 | 打印msg % args调试日志,仅PC开发包有效 |
| [LogInfo](#loginfo) | 客户端/服务端 | 打印msg % args消息日志 |
| [LogError](#logerror) | 客户端/服务端 | 打印msg % args错误日志 |
| [GetGameObjectById](#getgameobjectbyid) | 客户端/服务端 | 获取指定对象ID的游戏对象 |
| [GetGameObjectByEntityId](#getgameobjectbyentityid) | 客户端/服务端 | 获取指定实体ID的游戏对象 |
| [GetLoadedPlayers](#getloadedplayers) | 客户端/服务端 | 获取服务器所有玩家的ID列表 |
| [GetPlayerObject](#getplayerobject) | 客户端/服务端 | 获取玩家对象 |
| [GetEntityObject](#getentityobject) | 客户端/服务端 | 获取实体对象 |
| [GetEffectObject](#geteffectobject) | 客户端 | 获取特效对象 |
| [CreateEffectPreset](#createeffectpreset) | 客户端 | 创建特效对象 |
| [CreateTextboardPreset](#createtextboardpreset) | 客户端 | 创建文字面板预设对象 |
| [ListenForEvent](#listenforevent) | 客户端/服务端 | 监听指定的事件 |
| [UnListenForEvent](#unlistenforevent) | 客户端/服务端 | 反监听指定的事件 |
| [ListenForEngineEvent](#listenforengineevent) | 客户端/服务端 | 监听指定的引擎事件 |
| [UnListenForEngineEvent](#unlistenforengineevent) | 客户端/服务端 | 反监听指定的引擎事件 |
| [CreateEventData](#createeventdata) | 客户端/服务端 | 创建自定义事件的数据,eventData用于发送事件。创建的eventData可以理解为一个dict,可以嵌套赋值dict,list和基本数据类型,但不支持tuple |
| [BroadcastEvent](#broadcastevent) | 客户端/服务端 | 广播事件,双端通用 |
| [BroadcastPresetSystemEvent](#broadcastpresetsystemevent) | 客户端/服务端 | 广播给预设系统 |
| [NotifyToServer](#notifytoserver) | 客户端 | 通知服务端触发事件 |
| [NotifyToClient](#notifytoclient) | 服务端 | 通知指定客户端触发事件 |
| [BroadcastToAllClient](#broadcasttoallclient) | 服务端 | 通知指所有客户端触发事件 |
| [ListenSelfEvent](#listenselfevent) | 客户端/服务端 | 监听来自自己的事件 |
| [UnListenSelfEvent](#unlistenselfevent) | 客户端/服务端 | 反监听来自自己的事件 |
| [ListenPartEvent](#listenpartevent) | 客户端/服务端 | 监听来自指定零件的事件 |
| [UnListenPartEvent](#unlistenpartevent) | 客户端/服务端 | 反监听来自指定零件的事件 |
| [ListenPresetSystemEvent](#listenpresetsystemevent) | 客户端/服务端 | 监听来自预设系统的事件 |
| [UnListenPresetSystemEvent](#unlistenpresetsystemevent) | 客户端/服务端 | 反监听来自预设系统的事件 |
| [DestroyStoryLines](#destroystorylines) | 客户端/服务端 | 手动销毁零件蓝图 |
| [GetSelf](#getself) | 客户端/服务端 | 获取零件自身 |
| [GetApi](#getapi) | 客户端/服务端 | 返回当前对象可使用的SDK API模块 |
| [IsPlayerSneaking](#isplayersneaking) | 服务端 | 是否潜行 |
| [GetPlayerHunger](#getplayerhunger) | 服务端 | 获取玩家饥饿度,展示在UI饥饿度进度条上,初始值为20,即每一个鸡腿代表2个饥饿度。 **饱和度(saturation)** :玩家当前饱和度,初始值为5,最大值始终为玩家当前饥饿度(hunger),该值直接影响玩家**饥饿度(hunger)**。
1)增加方法:吃食物。
2)减少方法:每触发一次**消耗事件**,该值减少1,如果该值不大于0,直接把玩家 **饥饿度(hunger)** 减少1。 |
| [SetPlayerHunger](#setplayerhunger) | 服务端 | 设置玩家饥饿度。 |
## InitClient
客户端
method in Preset.Model.PartBase.PartBase
- 描述
客户端的零件对象初始化入口
- 参数
无
- 返回值
无
## InitServer
服务端
method in Preset.Model.PartBase.PartBase
- 描述
服务端的零件对象初始化入口
- 参数
无
- 返回值
无
## TickClient
客户端
method in Preset.Model.PartBase.PartBase
- 描述
客户端的零件对象逻辑驱动入口
- 参数
无
- 返回值
无
## TickServer
服务端
method in Preset.Model.PartBase.PartBase
- 描述
服务端的零件对象逻辑驱动入口
- 参数
无
- 返回值
无
## UnloadClient
客户端
method in Preset.Model.PartBase.PartBase
- 描述
客户端的零件对象卸载逻辑入口
- 参数
无
- 返回值
无
## UnloadServer
服务端
method in Preset.Model.PartBase.PartBase
- 描述
服务端的零件对象卸载逻辑入口
- 参数
无
- 返回值
无
## DestroyClient
客户端
method in Preset.Model.PartBase.PartBase
- 描述
客户端的零件对象销毁逻辑入口
- 参数
无
- 返回值
无
## DestroyServer
服务端
method in Preset.Model.PartBase.PartBase
- 描述
服务端的零件对象销毁逻辑入口
- 参数
无
- 返回值
无
## CanAdd
客户端/服务端
method in Preset.Model.PartBase.PartBase
- 描述
判断零件是否可以挂接到指定的父节点上
- 参数
| 参数名 | 数据类型
| 说明 |
| :--- | :--- | :--- |
| parent | PresetBase | 即将挂接的父预设 |
- 返回值
| 数据类型
| 说明 |
| :--- | :--- |
| str | 不允许挂接时,返回对应的错误提示 |
## GetTickCount
客户端/服务端
method in Preset.Model.PartBase.PartBase
- 描述
获取当前帧数
- 参数
无
- 返回值
| 数据类型
| 说明 |
| :--- | :--- |
| int | 当前帧数 |
## LogDebug
客户端/服务端
method in Preset.Model.PartBase.PartBase
- 描述
打印msg % args调试日志,仅PC开发包有效
- 参数
| 参数名 | 数据类型
| 说明 |
| :--- | :--- | :--- |
| msg | str | 要打印的格式化字符串 |
| *args | list(object) | 格式化参数列表 |
- 返回值
无
- 示例
```python
self.LogDebug(“self.isClient: %s”, self.isClient)
```
## LogInfo
客户端/服务端
method in Preset.Model.PartBase.PartBase
- 描述
打印msg % args消息日志
- 参数
| 参数名 | 数据类型
| 说明 |
| :--- | :--- | :--- |
| msg | str | 要打印的格式化字符串 |
| *args | list(object) | 格式化参数列表 |
- 返回值
无
- 示例
```python
self.LogInfo(“self.isClient: %s”, self.isClient)
```
## LogError
客户端/服务端
method in Preset.Model.PartBase.PartBase
- 描述
打印msg % args错误日志
- 参数
| 参数名 | 数据类型
| 说明 |
| :--- | :--- | :--- |
| msg | str | 要打印的格式化字符串 |
| *args | list(object) | 格式化参数列表 |
- 返回值
无
- 示例
```python
self.LogError(“self.isClient: %s”, self.isClient)
```
## GetGameObjectById
客户端/服务端
method in Preset.Model.PartBase.PartBase
- 描述
获取指定对象ID的游戏对象
- 参数
| 参数名 | 数据类型
| 说明 |
| :--- | :--- | :--- |
| id | int | 指定的对象ID |
- 返回值
| 数据类型
| 说明 |
| :--- | :--- |
| TransformObject | 成功返回游戏对象,失败返回None |
- 示例
```python
obj = self.GetGameObjectById(0)
```
## GetGameObjectByEntityId
客户端/服务端
method in Preset.Model.PartBase.PartBase
- 描述
获取指定实体ID的游戏对象
- 参数
| 参数名 | 数据类型
| 说明 |
| :--- | :--- | :--- |
| entityId | str | 指定的实体ID |
- 返回值
| 数据类型
| 说明 |
| :--- | :--- |
| TransformObject | 成功返回游戏对象,失败返回None |
- 示例
```python
obj = self.GetGameObjectByEntityId(0)
```
## GetLoadedPlayers
客户端/服务端
method in Preset.Model.PartBase.PartBase
- 描述
获取服务器所有玩家的ID列表
- 参数
无
- 返回值
| 数据类型
| 说明 |
| :--- | :--- |
| list(str) | 所有玩家的ID列表 |
## GetPlayerObject
客户端/服务端
method in Preset.Model.PartBase.PartBase
- 描述
获取玩家对象
- 参数
| 参数名 | 数据类型
| 说明 |
| :--- | :--- | :--- |
| playerId | str | 玩家ID |
- 返回值
| 数据类型
| 说明 |
| :--- | :--- |
| PlayerObject | 成功返回玩家对象,失败返回None |
- 示例
```python
player = self.GetPlayerObject(playerId)
```
## GetEntityObject
客户端/服务端
method in Preset.Model.PartBase.PartBase
- 描述
获取实体对象
- 参数
| 参数名 | 数据类型
| 说明 |
| :--- | :--- | :--- |
| entityId | str | 指定的实体ID |
- 返回值
| 数据类型
| 说明 |
| :--- | :--- |
| EntityObject | 成功返回实体对象,失败返回None |
- 示例
```python
entity = self.GetEntityObject(entityId)
```
## GetEffectObject
客户端
method in Preset.Model.PartBase.PartBase
- 描述
获取特效对象
- 参数
| 参数名 | 数据类型
| 说明 |
| :--- | :--- | :--- |
| effectId | int | 特效ID |
- 返回值
| 数据类型
| 说明 |
| :--- | :--- |
| EffectObject | 成功返回特效对象,失败返回None |
- 示例
```python
effect = self.GetEffectObject(effectId)
```
## CreateEffectPreset
客户端
method in Preset.Model.PartBase.PartBase
- 描述
创建特效对象
- 参数
| 参数名 | 数据类型
| 说明 |
| :--- | :--- | :--- |
| resource | str | 特效资源json |
| pos | tuple(float,float,float) | 特效位置 |
| rotation | tuple(float,float,float) | 特效旋转 |
| scale | tuple(float,float,float) | 特效缩放 |
- 返回值
| 数据类型
| 说明 |
| :--- | :--- |
| EffectPreset | 成功返回特效对象,失败返回None |
- 示例
```python
# 在某个实体位置播放指定特效
effect = self.CreateEffectPreset("effects/xxx", self.GetEntityPos(entityId))
```
## CreateTextboardPreset
客户端
method in Preset.Model.PartBase.PartBase
- 描述
创建文字面板预设对象
- 参数
| 参数名 | 数据类型
| 说明 |
| :--- | :--- | :--- |
| text | str | 文字显示内容 |
| textColor | tuple(float,float,float,float) | 文字颜色的RGBA值,范围0-1 |
| boardColor | tuple(float,float,float,float) | 可选参数,默认None,设置为黑色,面板颜色的RGBA值,范围0-1 |
| pos | tuple(float,float,float) | 可选参数,默认(0, 0, 0) 生成文字面板位置 |
| faceCamera | bool | 是否始终朝向相机, 默认为True |
- 返回值
| 数据类型
| 说明 |
| :--- | :--- |
| TextboardPreset | 成功返回文字面板对象,失败返回None |
- 示例
```python
# 在某个位置生成文字面板预设
textboard = self.CreateTextboardPreset('Hello', (0.5, 0.4, 0.3, 0.8))
```
## ListenForEvent
客户端/服务端
method in Preset.Model.PartBase.PartBase
- 描述
监听指定的事件
- 参数
| 参数名 | 数据类型
| 说明 |
| :--- | :--- | :--- |
| namespace | str | 命名空间 |
| systemName | str | 事件系统名称 |
| eventName | str | 事件名称 |
| instance | object | 实例 |
| func | object | 函数 |
| priority | str | 优先级 |
- 返回值
无
## UnListenForEvent
客户端/服务端
method in Preset.Model.PartBase.PartBase
- 描述
反监听指定的事件
- 参数
| 参数名 | 数据类型
| 说明 |
| :--- | :--- | :--- |
| namespace | str | 命名空间 |
| systemName | str | 事件系统名称 |
| eventName | str | 事件名称 |
| instance | object | 实例 |
| func | object | 函数 |
| priority | str | 优先级 |
- 返回值
无
## ListenForEngineEvent
客户端/服务端
method in Preset.Model.PartBase.PartBase
- 描述
监听指定的引擎事件
- 参数
| 参数名 | 数据类型
| 说明 |
| :--- | :--- | :--- |
| eventName | str | 事件名称 |
| instance | object | 实例 |
| func | object | 函数 |
| priority | str | 优先级 |
- 返回值
无
## UnListenForEngineEvent
客户端/服务端
method in Preset.Model.PartBase.PartBase
- 描述
反监听指定的引擎事件
- 参数
| 参数名 | 数据类型
| 说明 |
| :--- | :--- | :--- |
| eventName | str | 事件名称 |
| instance | object | 实例 |
| func | object | 函数 |
| priority | str | 优先级 |
- 返回值
无
## CreateEventData
客户端/服务端
method in Preset.Model.PartBase.PartBase
- 描述
创建自定义事件的数据,eventData用于发送事件。创建的eventData可以理解为一个dict,可以嵌套赋值dict,list和基本数据类型,但不支持tuple
- 参数
无
- 返回值
| 数据类型
| 说明 |
| :--- | :--- |
| dict | 事件数据 |
## BroadcastEvent
客户端/服务端
method in Preset.Model.PartBase.PartBase
- 描述
广播事件,双端通用
- 参数
| 参数名 | 数据类型
| 说明 |
| :--- | :--- | :--- |
| eventName | str | 事件名称 |
| eventData | object | 事件数据 |
- 返回值
无
## BroadcastPresetSystemEvent
客户端/服务端
method in Preset.Model.PartBase.PartBase
- 描述
广播给预设系统
- 参数
| 参数名 | 数据类型
| 说明 |
| :--- | :--- | :--- |
| eventName | str | 事件名称 |
| eventData | object | 事件数据 |
- 返回值
无
## NotifyToServer
客户端
method in Preset.Model.PartBase.PartBase
- 描述
通知服务端触发事件
- 参数
| 参数名 | 数据类型
| 说明 |
| :--- | :--- | :--- |
| eventName | str | 事件名称 |
| eventData | object | 事件数据 |
- 返回值
无
## NotifyToClient
服务端
method in Preset.Model.PartBase.PartBase
- 描述
通知指定客户端触发事件
- 参数
| 参数名 | 数据类型
| 说明 |
| :--- | :--- | :--- |
| playerId | str | 玩家ID |
| eventName | str | 事件名称 |
| eventData | object | 事件数据 |
- 返回值
无
## BroadcastToAllClient
服务端
method in Preset.Model.PartBase.PartBase
- 描述
通知指所有客户端触发事件
- 参数
| 参数名 | 数据类型
| 说明 |
| :--- | :--- | :--- |
| eventName | str | 事件名称 |
| eventData | object | 事件数据 |
- 返回值
无
## ListenSelfEvent
客户端/服务端
method in Preset.Model.PartBase.PartBase
- 描述
监听来自自己的事件
- 参数
| 参数名 | 数据类型
| 说明 |
| :--- | :--- | :--- |
| eventName | str | 事件名称 |
| target | object | 目标 |
| func | object | 回调函数 |
- 返回值
无
## UnListenSelfEvent
客户端/服务端
method in Preset.Model.PartBase.PartBase
- 描述
反监听来自自己的事件
- 参数
| 参数名 | 数据类型
| 说明 |
| :--- | :--- | :--- |
| eventName | str | 事件名称 |
| target | object | 目标 |
| func | object | 回调函数 |
- 返回值
无
## ListenPartEvent
客户端/服务端
method in Preset.Model.PartBase.PartBase
- 描述
监听来自指定零件的事件
- 参数
| 参数名 | 数据类型
| 说明 |
| :--- | :--- | :--- |
| partId | int | 指定零件的ID |
| eventName | str | 事件名称 |
| target | object | 目标 |
| func | object | 回调函数 |
- 返回值
无
## UnListenPartEvent
客户端/服务端
method in Preset.Model.PartBase.PartBase
- 描述
反监听来自指定零件的事件
- 参数
| 参数名 | 数据类型
| 说明 |
| :--- | :--- | :--- |
| partId | int | 指定零件的ID |
| eventName | str | 事件名称 |
| target | object | 目标 |
| func | object | 回调函数 |
- 返回值
无
## ListenPresetSystemEvent
客户端/服务端
method in Preset.Model.PartBase.PartBase
- 描述
监听来自预设系统的事件
- 参数
| 参数名 | 数据类型
| 说明 |
| :--- | :--- | :--- |
| eventName | str | 事件名称 |
| target | object | 目标 |
| func | object | 回调函数 |
- 返回值
无
## UnListenPresetSystemEvent
客户端/服务端
method in Preset.Model.PartBase.PartBase
- 描述
反监听来自预设系统的事件
- 参数
| 参数名 | 数据类型
| 说明 |
| :--- | :--- | :--- |
| eventName | str | 事件名称 |
| target | object | 目标 |
| func | object | 回调函数 |
- 返回值
无
## DestroyStoryLines
客户端/服务端
method in Preset.Model.PartBase.PartBase
- 描述
手动销毁零件蓝图
- 参数
无
- 返回值
无
## GetSelf
客户端/服务端
method in Preset.Model.PartBase.PartBase
- 描述
获取零件自身
- 参数
无
- 返回值
| 数据类型
| 说明 |
| :--- | :--- |
| PartBase | 零件自身 |
## GetApi
客户端/服务端
method in Preset.Model.SdkInterface.SdkInterface
- 描述
返回当前对象可使用的SDK API模块
- 参数
无
- 返回值
| 数据类型
| 说明 |
| :--- | :--- |
| extraClientApi或extraServerApi | 返回当前对象可使用的SDK API模块 |
## IsPlayerSneaking
服务端
method in Preset.Model.SdkInterface.SdkInterface
- 描述
是否潜行
- 参数
| 参数名 | 数据类型
| 说明 |
| :--- | :--- | :--- |
| playerId | str或int | 实体id |
- 返回值
| 数据类型
| 说明 |
| :--- | :--- |
| bool | 是否潜行 |
- 示例
```python
self.IsPlayerSneaking(playerId)
```
## GetPlayerHunger
服务端
method in Preset.Model.SdkInterface.SdkInterface
- 描述
获取玩家饥饿度,展示在UI饥饿度进度条上,初始值为20,即每一个鸡腿代表2个饥饿度。 **饱和度(saturation)** :玩家当前饱和度,初始值为5,最大值始终为玩家当前饥饿度(hunger),该值直接影响玩家**饥饿度(hunger)**。
1)增加方法:吃食物。
2)减少方法:每触发一次**消耗事件**,该值减少1,如果该值不大于0,直接把玩家 **饥饿度(hunger)** 减少1。
- 参数
| 参数名 | 数据类型
| 说明 |
| :--- | :--- | :--- |
| playerId | str或int | 玩家id |
- 返回值
| 数据类型
| 说明 |
| :--- | :--- |
| float | 玩家饥饿度 |
- 示例
```python
self.GetPlayerHunger(playerId)
```
## SetPlayerHunger
服务端
method in Preset.Model.SdkInterface.SdkInterface
- 描述
设置玩家饥饿度。
- 参数
| 参数名 | 数据类型
| 说明 |
| :--- | :--- | :--- |
| playerId | str或int | 玩家id |
| value | float | 饥饿度 |
- 返回值
| 数据类型
| 说明 |
| :--- | :--- |
| bool | 是否设置成功 |
- 示例
```python
self.SetPlayerHunger(playerId, 10)
```