I just did something like this in a recent project. I found it easier to use custom drawing rather than images, although you should also be able to do something with Line2D using textures.
Here's the code - it breaks down into two parts, the dashed line and the arrow:
func draw_arrow_dashed(start, end, size, color):
# draw dashed line
var dir = (end - start).normalized()
var dist = (end - start).length()
var dash = dir * dist / 10 # segment size
var gap = dir * dist / 20 # gap size
var n = 0
var pos = start # drawing position
var points = PoolVector2Array()
while n < dist:
draw_polyline(PoolVector2Array([pos, pos + dash]), color, size, true)
pos += dash + gap
n += dash.length() + gap.length()
# draw triangular arrow end
var a = end + dir * size/1.5
var b = end + dir.rotated(2*PI/3) * size
var c = end + dir.rotated(4*PI/3) * size
draw_polygon(PoolVector2Array([a, b, c]), PoolColorArray([color]))
It looks like this in-game:
