Godot: Control::has_point n'est pas répertorié comme méthode virtuelle

Créé le 13 mars 2017  ·  3Commentaires  ·  Source: godotengine/godot

Système d'exploitation ou appareil - Version Godot :
Godot 2.1/HEAD, mais il semble que master soit aussi quelque peu affecté

Description du problème:
Lors du codage de certains éléments pour un jeu (non FOSS), j'ai nommé l'une de mes méthodes has_point sur un CanvasItem -inheriting script qui a été affecté à certains contrôles. J'ai return true , car cela devait être remplacé par d'autres scripts... Et puis, soudainement, tous les contrôles avec ce script ont commencé à saisir tous les clics :rire:

J'ai décidé de rechercher dans la documentation, car je soupçonnais que quelque chose comme cela aurait pu se produire, mais Control::has_point n'était pas répertorié, car il n'est pas du tout lié.

Notez que l'implémentation de has_point sur scene/gui/control.cpp:572-588 appelle la méthode de script.

Étapes à reproduire :

  1. Faire un script avec :
extends Control
func has_point(point):
    return true
  1. Ajoutez-le à un nœud Button
  2. Courir
  3. Profite (ou en fait, pleure)

Lien vers un exemple de projet minimal : En partie pressé ici, donc peut-être plus tard sur demande.

Comment réparer:

  1. Aller à scene/gui/control.cpp:2516
  2. Ajoutez une macro BIND_VMETHOD appropriée, comme ici : scene/main/node.cpp:2923
BIND_VMETHOD(MethodInfo("_process", PropertyInfo(Variant::REAL, "delta")));
  1. Compilez, assurez-vous que la liste des documents Control::has_point(Vector2 point)
  2. Faire un RP
bug documentation junior job

Commentaire le plus utile

J'aimerais essayer ceci comme ma première contribution.

Tous les 3 commentaires

J'aimerais essayer ceci comme ma première contribution.

Supprimez également le bind_method ? (alias #7960)

Pas sûr de ça par contre

Edit : je devrais apprendre à lire. duh.

Corrigé par #8023.

Cette page vous a été utile?
0 / 5 - 0 notes