我正在制作一个国际象棋游戏,遇到了这个;
func _ready() -> void:
var x = Vector2(10,0)
var y = Vector2(0,10)
var white_sqaure = ImageTexture.create_from_image(Image.load_from_file("res://w_square.png"))
var black_sqaure = ImageTexture.create_from_image(Image.load_from_file("res://b_sqaure.png"))
for i in range(1,9):
for j in range(1,9):
print(i,j)
var square = Node2D.new()
square.set_position(i*x + j*y)
self.add_child(square)
var sprite = Sprite2D.new()
if (i+j)%2 == 0:
sprite.texture = black_square
pass
else:
sprite.texture = white_square
pass
square.add_child(sprite)
pass # Replace with function body.
第 18 行:标识符“black_square”未在当前作用域中声明。
第 21 行:标识符“white_square”未在当前作用域中声明。
我猜这些是警告而不是错误? 我发现 gdscript 不喜欢在其特定范围之外初始化变量 - 在本例中是在循环之外。但在每次迭代中重新声明它们也感觉很浪费。我通常会忽略这些警告,但如果您在循环内移动声明,警告应该会消失。仅供参考,我刚刚写了一个国际象棋游戏(包括一个基本的人工智能) - 如果您有任何一般性问题,请随时给我发消息(您可以在这里发送消息吗?如果没有,请在 itch.io 上查找 goldfish_chess 并在那里给我发消息)