Sistema operacional ou dispositivo - versão Godot:
Godot 2.1 / HEAD, mas parece que o master também está um pouco afetado
Descrição do problema:
Ao codificar algumas coisas para um jogo (não FOSS), nomeei um dos meus métodos como has_point
em um script herdado CanvasItem
que foi atribuído a alguns controles. Cheguei a return true
, já que era para ser sobrescrito por outros scripts ... E então, de repente, todos os controles com aquele script começaram a pegar todos os cliques: rindo:
Decidi pesquisar os documentos, pois suspeitava que algo assim pudesse ter acontecido, mas Control::has_point
não foi listado, pois não está vinculado de forma alguma.
Observe que a implementação de has_point
em scene/gui/control.cpp:572-588
chama o método de script.
Passos para reproduzir:
extends Control
func has_point(point):
return true
Link para o projeto de exemplo mínimo: Parcialmente com pressa aqui, então, talvez mais tarde, a pedido.
Como consertar:
scene/gui/control.cpp:2516
BIND_VMETHOD
adequada, como aqui: scene/main/node.cpp:2923
BIND_VMETHOD(MethodInfo("_process", PropertyInfo(Variant::REAL, "delta")));
Control::has_point(Vector2 point)
Eu gostaria de tentar isso como minha primeira contribuição.
Remova também o bind_method
normal?(também conhecido como # 7960)
Não tenho certeza sobre isso embora
Edit: eu deveria aprender a ler. duh.
Corrigido por # 8023.
Comentários muito úteis
Eu gostaria de tentar isso como minha primeira contribuição.