I feel like I’ve changed all the colors in the editor settings at least once. But the paths remain very thin and turquoise. In my scene with lots of green, they are almost invisible. Which color I have to edit? Can I make the lines thicker? They’re just too thin to see anything.
As far as I can tell it’s not a setting. You can change the CanvasItem.self_modulate color which may help a bit.
You can also create a ShaderMaterial and use a Shader like:
shader_type canvas_item;
void fragment() {
COLOR = vec4(1.0, 0.0, 0.0, 1.0);
}
I don’t think you can modify the thickness of the lines.
You’d have to create a custom @tool script version of Path2D and have it render a line on top of the path in real time. Then hide it during gameplay.
You can extrapolate from my Curved Terrain Plugin to figure out how to amke it happen.
Thanks for hints. By the way I’ll send a request to the development team about that. I think it’s very important to be able to change the color of the curves in the editor settings.
Working with this 1-pixel-thin, almost invisible paths/curves/polygons in the Godot 4 Scene Editor is a nightmare!
I tried to visualize things in the editor together with ChatGPT. ChatGPT failed. We didn’t even manage to visualize a simple circle in the editor within a scene. Are there any working examples for Godot 4, in which something is visualized in the 2D scene window of the editor?
Visualization of paths inside the game works very well:
const line_width = 10
var cached_points: PackedVector2Array
func _ready():
if Engine.is_editor_hint():
set_notify_transform(true)
_rebuild()
func _process(_delta):
if Engine.is_editor_hint():
queue_redraw()
func _notification(what):
if what == NOTIFICATION_TRANSFORM_CHANGED:
_rebuild()
func _rebuild():
if curve == null:
return
cached_points = curve.tessellate(5)
queue_redraw()
func _draw():
draw_circle(Vector2.ZERO, 50, Color.GREEN)
if cached_points.is_empty():
return
draw_polyline(cached_points, line_color, line_width, true)
That’s not surprising. LLMs only know about code. They have no concept of how to use the editor really or what stuff looks like.
I personally wouldn’t attribute an LLM to being a person and therefor part of a collective we.
There are lots of ways to see things. The easiest way TBH is just to use an Area2D with a CollisionShape2D or CollisionPolygon2D.
Ah! I knew that mentioning ChatGPT here would trigger some people. ChatGPT “knows” exactly how the editor is structured and it also understood my problem precisely. It seems it has some problems with Godot 4. Apparently, there is much more documentation and examples for Godot 3.
The idea is to make the curves within a Path2D node thicker in the editor, i.e., to trace them so that they are easier to see. Do you have a small example that shows how to draw things, such as a simple circle, at the editor level within a node for Godot 4? Just to understand the concept to add own drawing routines inside the editor.
What I’ve read everywhere doesn’t work:
@tool
extends Node2D
func _draw():
# Zeichnet einen Kreis im Editor
draw_circle(Vector2.ZERO, 50, Color.RED)
func _process(_delta):
if Engine.is_editor_hint():
queue_redraw()
You’re right, I was triggered and not at all trying to help you from going down dead ends.
I’m aware. Hence the entire project I linked you that literally shows you how to draw on a node using a Path2D.
Other than what I already showed you? Sure.
Circle Example
@tool
extends Node2D
## A simple example showing how to draw shapes in the Godot editor
## This script draws a circle that's visible both in the editor and at runtime
## Circle radius in pixels
@export var radius: float = 50.0:
set(value):
radius = value
queue_redraw() # Request a redraw when the radius changes
## Circle color
@export var color: Color = Color.CORNFLOWER_BLUE:
set(value):
color = value
queue_redraw() # Request a redraw when the color changes
## Whether to fill the circle or just draw an outline
@export var filled: bool = true:
set(value):
filled = value
queue_redraw()
## Line width for unfilled circles
@export var line_width: float = 2.0:
set(value):
line_width = value
queue_redraw()
func _draw() -> void:
if filled:
# Draw a filled circle
draw_circle(Vector2.ZERO, radius, color)
else:
# Draw a circle outline
draw_arc(Vector2.ZERO, radius, 0, TAU, 32, color, line_width)
# Optional: Force a redraw when the node enters the scene tree
# This ensures the circle appears immediately in the editor
func _ready() -> void:
queue_redraw()
For the record, I had Claude.ai create that example for me and then just tested it.
TBH that should work. You may need to attach it to your Node2D and then restart your project. That’s what I had to do with the above script.
Ah, I think this is related to this bug:
After restarting Godot my script above works…

