#window #resize #godot #gdscript
Вопрос:
Поэтому я сделал это меню для своей игры в годо. Я также создал это окно, которое отображается при нажатии кнопки. Это окно находится WindowDialog
в годо, и я хочу, чтобы его размер можно было изменять. Однако я получаю ошибку, когда помещаю код для изменения размера окна. Вот мой код:
extends WindowDialog
var newSize
func _ready():
# Change 'hide()' to 'show()' to show the window.
hide()
set_process_input(true)
newSize = self.get_size()
pass
func _input(event):
if(event.type == InputEvent.MOUSE_MOTION):
if(Input.is_mouse_button_pressed(1)):
if (self.get_local_mouse_position().x > (self.get_size().x - 30)) amp;amp; (self.get_local_mouse_position().y > (self.get_size().y - 30)) :
newSize = event.relative_pos
self.set_size(newSize)
print(self.get_size().x)
print(event.relative_x)
Ошибка, которую я получаю, заключается в следующем:
Invalid get index 'type' (on base: 'InputEventMouseMotion').
Ответ №1:
Чтобы ответить на вопрос, название, чтобы сделать WindowDialog
то, что можно изменить, установите для него resizable
значение true.
Теперь об ошибке. Не проверяйте type
свойство, проверьте тип event
объекта, вот так:
if event is InputEventMouseMotion:
pass
Или, предполагая , что вы хотите прочитать свойства InputEventMouseMotion
, вы можете сделать это:
var mouse_motion_event := event as InputEventMouseMotion
if mouse_motion_event != null:
pass
Кое-что еще: вам , вероятно, не нужно звонить set_process_input(true)
, по крайней мере, не _ready
нужно . Если у вас есть определенная _input
функция, Годо вызовет ее (а если ее нет _input
, то она не будет). Таким образом, единственная причина позвонить set_process_input(true)
-это если вы звонили set_process_input(false)
раньше.