Files
netease-modsdk-wiki/docs/mcdocs/1-ModAPI/接口/玩家/渲染.md
2025-03-17 13:24:39 +08:00

544 lines
14 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 | 是否成功 |
- 示例
```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 | 是否成功 |
- 示例
```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 | 是否成功 |
- 示例
```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')
```
## 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 | 是否成功 |
- 示例
```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')
```
## 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皮肤。但会被骨骼模型覆盖
- 示例
```python
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateModel(entityId)
comp.SetSkin("kagura")
```