Godot: Control :: has_point não listado como método virtual

Criado em 13 mar. 2017  ·  3Comentários  ·  Fonte: godotengine/godot

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:

  1. Faça um script com:
extends Control
func has_point(point):
    return true
  1. Adicione-o a um nó de botão
  2. Corre
  3. Lucro (ou, na verdade, chore)

Link para o projeto de exemplo mínimo: Parcialmente com pressa aqui, então, talvez mais tarde, a pedido.

Como consertar:

  1. Vá para scene/gui/control.cpp:2516
  2. Adicione uma macro BIND_VMETHOD adequada, como aqui: scene/main/node.cpp:2923
BIND_VMETHOD(MethodInfo("_process", PropertyInfo(Variant::REAL, "delta")));
  1. Compile, certifique-se de que a lista de documentos Control::has_point(Vector2 point)
  2. Faça um PR
bug documentation junior job

Comentários muito úteis

Eu gostaria de tentar isso como minha primeira contribuição.

Todos 3 comentários

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.

Esta página foi útil?
0 / 5 - 0 avaliações