如何在特定操作后更换矩形节点纹理?调用node.setFillColor报错求助
问题解决:节点纹理替换报错处理
你要替换的是节点纹理,但误用了设置纯色的setFillColor()方法,这就是报错的核心原因——这个方法仅用于设置填充颜色,无法用来替换纹理。
先看你的初始草纹理:
下面分不同开发场景给出正确的纹理替换代码:
1. Unity 引擎
如果是3D网格物体:
// 获取物体的网格渲染组件 MeshRenderer meshRenderer = node.GetComponent<MeshRenderer>(); // 替换主纹理(sand需是已加载的Texture2D对象) meshRenderer.material.mainTexture = sand;
如果是2D精灵:
SpriteRenderer spriteRenderer = node.GetComponent<SpriteRenderer>(); // 将纹理转为Sprite后替换 spriteRenderer.sprite = Sprite.Create(sand, new Rect(0,0,sand.width,sand.height), new Vector2(0.5f,0.5f));
2. Godot 引擎
2D Sprite节点:
// 直接替换纹理(sand为已导入的Texture2D资源) node.texture = sand
3D MeshInstance3D节点:
// 获取材质并修改纹理参数 var mat = node.get_active_material(0) mat.set("albedo_texture", sand)
额外排查要点
- 确认
sand是正确加载的纹理对象,不是颜色值或未初始化的变量 - 检查节点是否带有纹理渲染组件(如SpriteRenderer、MeshRenderer),没有的话需先添加该组件
内容的提问来源于stack exchange,提问作者Jahidul Hasan Razib
相关产品推荐
相关产品推荐

