首页 > 解决方案 > 如何设置单个网格实例的颜色?

问题描述

我有一个简单的角色场景,我在主关卡场景中多次实例化。它是一个具有网格实例和碰撞形状的运动体。我已将以下脚本附加到场景中,目的是我可以在编辑器中轻松更改角色的身体颜色。

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

此脚本按预期工作,除了当我更改一个字符的颜色时,所有字符都会更改颜色。仅更改一个字符的颜色的最佳方法是什么?

标签: godot

解决方案


这个 KinematicBody 的所有实例都变得相同char_material,您可以在其中进行修改change_color。在修改之前复制材料:

var new_material := char_material.duplicate()

推荐阅读