Годо: Как переопределить функцию из унаследованного скрипта?

#function #inheritance #overriding #godot #gdscript

Вопрос:

Как переопределить функцию, определенную в родительском сценарии?

Вот мой родительский сценарий:

 # Object.gd  extends Area2D  var id = 0 var coords  func _ready():  assign_values()  func assign_values():  var a = global_position.x  var b = global_position.y  #cantor pairing function  id = (a   b) * ( a   b   1) / 2   b  coords = global_position   

Вот сценарий, который расширяет родительский сценарий. Я пытаюсь перезаписать функцию assign_values() в новом скрипте, чтобы вычислить идентификатор по-другому. Когда я вызываю assign_values в расширенном сценарии, происходит самая странная вещь. Я больше не могу печатать отдельные компоненты вектора координат, хотя тип проверяется, и печать вектора тоже работает нормально.

 # Road.gd  extends "res://Object.gd"   func assign_values():  coords = Vector2(128, 96)  var a = coords.x # lt;- Here be Dragons  var b = coords.y  #cantor pairing function  id = (a   b) * ( a   b   1) / 2   b    print(typeof(coords)) # prints 5 -gt; Vector2 type  print(coords) # prints (128, 96), looks alright  print(coords.x) # Boom! crashes with error Invalid get index 'x' (on base: 'Nil').      

Я в недоумении, почему я получаю эту странную векторную ошибку. Примечательно, что все это работает, если я просто напишу новую функцию в расширенном скрипте func assign_new_values(), но я не уверен, что это правильный способ сделать это. Я ожидал, что Годо переопределит функции из родительских сценариев, если они будут просто объявлены снова, но это, похоже, не работает. Как правильно это сделать? Не удалось ничего найти в документации..

Комментарии:

1. Привет, я (к счастью) не могу воспроизвести эту проблему. Я создал новый проект, скопировал и вставил сценарии, которые вы опубликовали выше. Это сработало, как и ожидалось , и вывело значения: 5 , (128, 96) , и 128 .

2. Спасибо за попытку! В таком случае это могут быть мои настройки или бог знает что еще. Не с нетерпением жду возможности устранить эту проблему…