Files
netease-modsdk-wiki/docs/mcdocs/1-ModAPI/接口/玩家/渲染.md
2025-03-18 14:46:12 +08:00

645 lines
17 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
sidebarDepth: 1
---
# 渲染
## AddPlayerAnimation
<span style="display:inline;color:#7575f9">客户端</span>
method in mod.client.component.actorRenderCompClient.ActorRenderCompClient
- 描述
增加玩家渲染动画
- 参数
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- | :--- |
| animationKey | str | 动画键 |
| animationName | str | 动画名称 |
- 返回值
| <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- |
| bool | 是否成功 |
- 备注
- 调用该接口后需要调用RebuildPlayerRender才会生效
- 该玩家重新进入视野时仍会生效,引擎会自动重新调用一遍
- 该接口的animationName参数不能传入带有大写字母的字符串否则动画将注册失败。
- 示例
```python
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateActorRender(playerId)
comp.AddPlayerAnimation("move.arms", "animation.player.move.arms_custom")
```
## AddPlayerAnimationController
<span style="display:inline;color:#7575f9">客户端</span>
method in mod.client.component.actorRenderCompClient.ActorRenderCompClient
- 描述
增加玩家渲染动画控制器
- 参数
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- | :--- |
| animationControllerKey | str | 动画控制器键 |
| animationControllerName | str | 动画控制器名称 |
- 返回值
| <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- |
| bool | 是否成功 |
- 备注
- 调用该接口后需要调用RebuildPlayerRender才会生效
- 该玩家重新进入视野时仍会生效,引擎会自动重新调用一遍
- 示例
```python
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateActorRender(playerId)
comp.AddPlayerAnimationController("root", "controller.animation.player.root_custom")
```
## AddPlayerAnimationIntoState
<span style="display:inline;color:#7575f9">客户端</span>
method in mod.client.component.actorRenderCompClient.ActorRenderCompClient
- 描述
在玩家的动画控制器中的状态添加动画或者动画控制器
- 参数
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- | :--- |
| animationControllerName | str | 动画控制器名称如rootcontroller.animation.player.root |
| stateName | str | 动画状态名称如first_person |
| animationName | str | 添加的动画名称或动画控制器名称如first_person_attack_controller_new |
| condition | str | 动画控制表达式默认为空如query.mod.index > 0 |
- 返回值
| <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- |
| bool | 是否成功 |
- 备注
- 调用该接口后需要调用RebuildPlayerRender才会生效
- 该玩家重新进入视野时仍会生效,引擎会自动重新调用一遍
- 示例
```python
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateActorRender(playerId)
comp.AddPlayerAnimationIntoState("root", "first_person", "first_person_attack_controller_new", "query.mod.index > 0")
```
## AddPlayerGeometry
<span style="display:inline;color:#7575f9">客户端</span>
method in mod.client.component.actorRenderCompClient.ActorRenderCompClient
- 描述
增加玩家渲染几何体
- 参数
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- | :--- |
| geometryKey | str | 渲染几何体键如玩家默认几何体default |
| geometryName | str | 渲染几何体名称如玩家默认几何体geometry.humanoid.custom |
- 返回值
| <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- |
| bool | 是否成功 |
- 备注
- 调用该接口后需要调用RebuildPlayerRender才会生效
- 动画和贴图都是与几何体密切相关的,改变几何体也需要改变动画与贴图
- 该玩家重新进入视野时仍会生效,引擎会自动重新调用一遍
- 示例
```python
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateActorRender(playerId)
comp.AddPlayerGeometry("default", "geometry.player.custom")
```
## AddPlayerParticleEffect
<span style="display:inline;color:#7575f9">客户端</span>
method in mod.client.component.actorRenderCompClient.ActorRenderCompClient
- 描述
增加玩家特效资源
- 参数
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- | :--- |
| effectKey | str | 特效资源Key如bee.entity.json中的nectar_dripping |
| effectName | str | 特效资源名称如minecraft:nectar_drip_particle |
- 返回值
| <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- |
| bool | 是否成功 |
- 备注
- 该玩家重新进入视野时仍会生效,引擎会自动重新调用一遍
- 示例
```python
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateActorRender(playerId)
comp.AddPlayerParticleEffect("nectar_dripping", "minecraft:nectar_drip_particle")
```
## AddPlayerRenderController
<span style="display:inline;color:#7575f9">客户端</span>
method in mod.client.component.actorRenderCompClient.ActorRenderCompClient
- 描述
增加玩家<a href="../../../../mcguide/20-玩法开发/15-自定义游戏内容/3-自定义生物/01-自定义基础生物.html#_7-自定义渲染控制器">渲染控制器</a>
- 参数
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- | :--- |
| renderControllerName | str | 渲染控制器名称 |
| condition | str | 渲染控制器条件 |
- 返回值
| <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- |
| bool | 添加是否成功 |
- 备注
- 调用该接口后需要调用RebuildPlayerRender才会生效
- 该玩家重新进入视野时仍会生效,引擎会自动重新调用一遍
- 示例
```python
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateActorRender(playerId)
comp.AddPlayerRenderController('custom_render_controller_name', 'query.mod.condition')
```
## AddPlayerRenderMaterial
<span style="display:inline;color:#7575f9">客户端</span>
method in mod.client.component.actorRenderCompClient.ActorRenderCompClient
- 描述
增加玩家渲染需要的<a href="../../../../mcguide/20-玩法开发/15-自定义游戏内容/3-自定义生物/01-自定义基础生物.html#_3-自定义材质">材质</a>
- 参数
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- | :--- |
| materialKey | str | 材质key |
| materialName | str | 材质名称 |
- 返回值
| <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- |
| bool | 添加是否成功 |
- 备注
- 调用该接口后需要调用RebuildPlayerRender才会生效
- 该玩家重新进入视野时仍会生效,引擎会自动重新调用一遍
- 示例
```python
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateActorRender(playerId)
comp.AddPlayerRenderMaterial('custom_material_key', 'custom_material_name')
```
## AddPlayerScriptAnimate
<span style="display:inline;color:#7575f9">客户端</span>
method in mod.client.component.actorRenderCompClient.ActorRenderCompClient
- 描述
在玩家的客户端实体定义minecraft:client_entityjson中的scripts/animate节点添加动画/动画控制器
- 参数
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- | :--- |
| animateName | str | 动画/动画控制器名称如look_at_target |
| condition | str | 动画/动画控制器控制表达式默认为空如query.mod.index > 0 |
| autoReplace | bool | 是否覆盖已存在的动画/动画控制器默认值为False |
- 返回值
| <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- |
| bool | 是否成功 |
- 备注
- 该接口只对CreateActorRender时传入的playerId起效果
- 示例
```python
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateActorRender(playerId)
comp.AddPlayerAnimationController("animation_controller_short_name", "controller.animation.player.root_custom")
comp.AddPlayerScriptAnimate("animation_controller_short_name", "query.mod.index > 0")
```
## AddPlayerSoundEffect
<span style="display:inline;color:#7575f9">客户端</span>
method in mod.client.component.actorRenderCompClient.ActorRenderCompClient
- 描述
增加玩家音效资源
- 参数
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- | :--- |
| soundKey | str | 音效资源Key |
| soundName | str | 音效资源名称 |
- 返回值
| <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- |
| bool | 是否成功 |
- 备注
- 该玩家重新进入视野时仍会生效,引擎会自动重新调用一遍
- 音效在RP/entities/player.entity.json # minecraft:client_entity / description中的定义如下
"sound_effects": {
"sound_thunder": "ambient.weather.thunder" # ambient.weather.thunder是sound_definitions中定义
}
如果在动作中同步播放音频可以在RP/animations/player.animation_controllers.json # animation_controllers / controller.animation.player.root中定义如下
"dripping": {
"sound_effects": [
{
"effect": "sound_thunder"
}
],
"transitions": [
{
"third_person": "!query.mod.is_powered"
}
]
},
- 示例
```python
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateActorRender(playerId)
comp.AddPlayerSoundEffect("sound_thunder", "ambient.weather.thunder")
```
## AddPlayerTexture
<span style="display:inline;color:#7575f9">客户端</span>
method in mod.client.component.actorRenderCompClient.ActorRenderCompClient
- 描述
增加玩家渲染贴图
- 参数
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- | :--- |
| geometryKey | str | 贴图键 |
| geometryName | str | 贴图路径 |
- 返回值
| <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- |
| bool | 是否成功 |
- 备注
- 调用该接口后需要调用RebuildPlayerRender才会生效
- 该玩家重新进入视野时仍会生效,引擎会自动重新调用一遍
- 示例
```python
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateActorRender(playerId)
comp.AddPlayerTexture("default", "textures/misc/missing_texture")
```
## RebuildPlayerRender
<span style="display:inline;color:#7575f9">客户端</span>
method in mod.client.component.actorRenderCompClient.ActorRenderCompClient
- 描述
重建玩家的数据渲染器
- 参数
- 返回值
| <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- |
| bool | 重建是否成功 |
- 备注
- 该玩家重新进入视野时仍会生效,引擎会自动重新调用一遍
- 示例
```python
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateActorRender(playerId)
comp.RebuildPlayerRender()
```
## RemovePlayerAnimationController
<span style="display:inline;color:#7575f9">客户端</span>
method in mod.client.component.actorRenderCompClient.ActorRenderCompClient
- 描述
移除玩家渲染动画控制器
- 参数
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- | :--- |
| animationControllKey | str | 动画控制器键 |
- 返回值
| <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- |
| bool | 是否成功 |
- 备注
- 调用该接口后需要调用RebuildPlayerRender才会生效
- 该玩家重新进入视野时仍会生效,引擎会自动重新调用一遍
- 示例
```python
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateActorRender(playerId)
comp.RemovePlayerAnimationController("root")
```
## RemovePlayerGeometry
<span style="display:inline;color:#7575f9">客户端</span>
method in mod.client.component.actorRenderCompClient.ActorRenderCompClient
- 描述
删除玩家渲染几何体
- 参数
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- | :--- |
| geometryKey | str | 渲染几何体名称键如玩家默认几何体default |
- 返回值
| <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- |
| bool | 是否成功 |
- 备注
- 调用该接口后需要调用RebuildPlayerRender才会生效
- 动画和贴图都是与几何体密切相关的,改变几何体也需要改变动画与贴图
- 该玩家重新进入视野时仍会生效,引擎会自动重新调用一遍
- 示例
```python
import mod.client.extraClientApi as clientApi
# geometry definition in player.entity.json
"geometry": {
"default": "geometry.humanoid.custom",
"cape": "geometry.cape"
}
comp = clientApi.GetEngineCompFactory().CreateActorRender(playerId)
comp.RemovePlayerGeometry("default")
```
## RemovePlayerRenderController
<span style="display:inline;color:#7575f9">客户端</span>
method in mod.client.component.actorRenderCompClient.ActorRenderCompClient
- 描述
删除玩家<a href="../../../../mcguide/20-玩法开发/15-自定义游戏内容/3-自定义生物/01-自定义基础生物.html#_7-自定义渲染控制器">渲染控制器</a>
- 参数
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- | :--- |
| renderControllerName | str | 渲染控制器名称 |
- 返回值
| <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- |
| bool | 删除是否成功 |
- 备注
- 调用该接口后需要调用RebuildPlayerRender才会生效
- 该玩家重新进入视野时仍会生效,引擎会自动重新调用一遍
- 示例
```python
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateActorRender(playerId)
comp.RemovePlayerRenderController('custom_render_controller_name')
```
## ResetSkin
<span style="display:inline;color:#7575f9">客户端</span>
method in mod.client.component.modelCompClient.ModelComponentClient
- 描述
还原默认皮肤
- 参数
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- | :--- |
| isSteve | bool | 是否还原成Steve默认皮肤, 默认为True。当isSteve为False时则还原成资源中心中购买并穿戴的皮肤 |
- 返回值
| <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- |
| bool | 设置是否成功 |
- 示例
```python
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateModel(playerId)
comp.ResetSkin()
```
## SetPlayerItemInHandVisible
<span style="display:inline;color:#7575f9">客户端</span>
method in mod.client.component.actorRenderCompClient.ActorRenderCompClient
- 描述
设置是否隐藏玩家的手持物品模型显示
- 参数
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- | :--- |
| visible | bool | 设置是否显示或隐藏True表示显示False表示隐藏 |
| mode | int | 设置隐藏手持物品在哪一个视角模式生效。mode=0时表示第一人称和第三人称下均隐藏手持物品mode=1时表示仅隐藏第三人称下的手持物品mode=2时表示仅隐藏第一人称下的手持物品。默认值为0。填入0,1,2以外的数值会被强制设置为0 |
- 返回值
| <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- |
| bool | 设置是否成功成功返回True失败返回False。 |
- 示例
```python
import mod.client.extraClientApi as clientApi
actorRenderComp = clientApi.GetEngineCompFactory().CreateActorRender(playerId)
# 隐藏指定玩家的手持物品模型显示
print actorRenderComp.SetPlayerItemInHandVisible(False, 0)
```
## SetSkin
<span style="display:inline;color:#7575f9">客户端</span>
method in mod.client.component.modelCompClient.ModelComponentClient
- 描述
更换原版自定义皮肤
- 参数
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- | :--- |
| skin | str | 贴图路径以textures\models为当前路径的相对路径 |
- 返回值
| <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- |
| bool | 设置是否成功 |
- 备注
- 会覆盖原有皮肤包括4d皮肤。但会被骨骼模型覆盖
- 只能修改Steve模型的皮肤不能修改Alex模型的皮肤
- 示例
```python
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateModel(playerId)
comp.SetSkin("kagura")
```