从Unity转Godot:复制节点后材质无法独立,修改颜色同步问题求助
解决Godot中复制节点后材质无法独立的问题
问题根源
默认立方体Mesh自带的材质属于内置全局资源,直接使用Make Unique无法彻底切断共享关联,这是修改颜色同步的核心原因。
修复现有节点的正确操作
- 选中其中一个节点的
MeshRenderer3D,找到材质槽右侧的箭头按钮 - 选择Save as New Resource,将材质保存到项目文件夹中(比如命名为
blue_material.tres) - 对另一个节点重复上述操作,保存为不同的材质文件(比如
red_material.tres) - 此时修改任意一个材质的颜色,另一个节点不会再同步变化
批量创建不同颜色长方体的高效方案
手动流程
- 创建基础长方体节点,给
MeshRenderer3D添加全新材质资源:点击材质槽下拉菜单,选择New StandardMaterial3D - 直接在编辑器中修改该材质的颜色,然后将材质保存到项目文件夹
- 复制节点后,对每个副本点击材质槽箭头→
Make Unique,生成独立材质副本后修改颜色即可
脚本批量生成(更适合大量创建)
用GDScript自动生成带独立材质的立方体,无需手动复制:
extends Node3D func _ready(): # 生成10个随机颜色的立方体,间隔排列 for index in range(10): var cube = MeshInstance3D.new() # 创建新的立方体Mesh cube.mesh = BoxMesh.new() # 创建独立的材质并设置随机颜色 var unique_mat = StandardMaterial3D.new() unique_mat.albedo_color = Color(randf(), randf(), randf()) cube.material_override = unique_mat # 设置位置避免重叠 cube.position = Vector3(index * 2.5, 0, 0) add_child(cube)
关键提示
永远优先使用项目内保存的本地材质资源,而非Mesh自带的内置资源,这样能彻底避免共享关联问题。
内容的提问来源于stack exchange,提问作者Afaq Ahmad
相关产品推荐
相关产品推荐

