godot - 如何设置单个网格实例的颜色?
问题描述
我有一个简单的角色场景,我在主关卡场景中多次实例化。它是一个具有网格实例和碰撞形状的运动体。我已将以下脚本附加到场景中,目的是我可以在编辑器中轻松更改角色的身体颜色。
tool
extends KinematicBody
const char_material = preload("res://Materials/Character_material.tres")
export var body_color: Color setget change_color
func change_color(new_color: Color):
var new_material = char_material
new_material.albedo_color = new_color
$BodyMesh.material_override = new_material
body_color = new_color
此脚本按预期工作,除了当我更改一个字符的颜色时,所有字符都会更改颜色。仅更改一个字符的颜色的最佳方法是什么?
解决方案
这个 KinematicBody 的所有实例都变得相同char_material
,您可以在其中进行修改change_color
。在修改之前复制材料:
var new_material := char_material.duplicate()
推荐阅读
- javascript - Bootstrap: $('#myModal').modal('show'); causes screen to go black
- python - How to mirror value in a column in a new column based on ID
- r - Replace multiple strings comprising of a different number of characters with one gsubfn()
- bigdata - Comparison between Big Data and Data Lakes , difference and similarities
- android - Google Pay AutoResolveHelper.resolveTask() 未在 Fragment 中调用 onActivityResult
- spring - spring rest docs - 折叠长 jsons
- ruby - 权限错误:在使用 ruby sdk 创建 facebook 自定义受众时连接到 Business Manager 以创建此受众
- kotlin - What does a Coroutine Join do?
- javascript - 不允许空格作为输入字段中的第一个输入字符
- mysql - 如何使用查询备份mysql数据库