Godot Version
4.4.1
Question
The current design creates the result below
I have total of 5 grids with each of 36 buttons. By listening swipe(in
gui_input
) i am shifting all this grid nodes parallelly (position.x
). Current scroll container did not meet my suits.My editor layout design is like below
As you see above, i have a node for each grid (total 5) and placed next to each other. This way by listening swipe i am changing their positions with parallel tweens.
After scene is rendered, everything is fast but initialization is a little bit slow(around 0.8 - 1.3 second)
In initialization imo, i am not doing too much for every button as seen below. They are normal buttons with styleboxflat styles (not texture buttons)
grid_size_lbl.text = str(grid_size) + " x " + str(grid_size)
for row:int in grid_container.columns:
for column:int in grid_container.columns:
var level_num:int = (row * 6) + (column + 1)
var lvl_exists:bool = Constants.is_level_exists(grid_size, level_num)
var btn_ratio_container:LevelChooserBtnRatiod = LEVEL_CHOOSE_BTN.instantiate()
var btn:Button = btn_ratio_container.get_child(0)
btn_ratio_container.modulate_color = Constants.get_selection_grid_btn_color(grid_size)
if lvl_exists:
btn.pressed.connect(button_clicked.bind(level_num))
btn_ratio_container.level_num = str(level_num)
else:
var levels_unlocked:bool = GameManager.are_levels_unlocked(grid_size)
btn.disabled = true
btn_ratio_container.level_num = "?"
grid_container.add_child(btn_ratio_container)
func button_clicked(level_num:int) -> void:
var get_current_selection_scn = get_tree().get_first_node_in_group("level_choose_grid")
SceneManager.load_game_session(get_current_selection_scn, Constants.get_level_data(grid_size, level_num))
So my question is, is there any way better to design this “swipe to grid” situation? Can i use multi threading in initialization? Am i missing a node exactly for this situation?