如何设置单个网格实例的颜色?
How do I set the color of a single meshinstance?
我有一个简单的角色场景,我在主场景中实例化了几次。它是一个运动学 body,具有网格实例和碰撞形状 children。我已将以下脚本附加到场景中,目的是我可以在编辑器中轻松更改角色的 body 颜色。
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
中对其进行了修改。在修改之前复制 material:
var new_material := char_material.duplicate()
我有一个简单的角色场景,我在主场景中实例化了几次。它是一个运动学 body,具有网格实例和碰撞形状 children。我已将以下脚本附加到场景中,目的是我可以在编辑器中轻松更改角色的 body 颜色。
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
中对其进行了修改。在修改之前复制 material:
var new_material := char_material.duplicate()