Trong phần này, mình sẽ hướng dẫn bạn các để tạo 1 cái pause menu khi đang chơi game và nhấn vào pause sau đó thì game dừng lại và bạn có thể chơi tiếp, chơi lại, thoát.
| Tham gia kênh Telegram của AnonyViet 👉 Link 👈 |
Và tạo menu khi kết thúc game nó gồm: Level kế tiếp, Chơi lại, thoát ra ngoài menu.
Pause Menu
![[Tạo 2D Platformer Game với Godot] Phần 24: Tạo Pause Menu 45 [Tạo 2D Platformer Game với Godot] Phần 24: Tạo Pause Menu 43](https://anonyviet.com/wp-content/uploads/2021/11/22-11-2021-01-01-40.png)
Mình add CanvasLayer là node gốc và rename là PauseMenu
![[Tạo 2D Platformer Game với Godot] Phần 24: Tạo Pause Menu 46 [Tạo 2D Platformer Game với Godot] Phần 24: Tạo Pause Menu 44](https://anonyviet.com/wp-content/uploads/2021/11/22-11-2021-01-02-35.png)
Vì nó khá nhỏ nên mình chỉnh min size lên.
![[Tạo 2D Platformer Game với Godot] Phần 24: Tạo Pause Menu 47 [Tạo 2D Platformer Game với Godot] Phần 24: Tạo Pause Menu 45](https://anonyviet.com/wp-content/uploads/2021/11/22-11-2021-01-02-41.png)
Nó đã to hơn khi chỉnh min size là và ở ô text mình thêm 2 dấu | |
![[Tạo 2D Platformer Game với Godot] Phần 24: Tạo Pause Menu 48 [Tạo 2D Platformer Game với Godot] Phần 24: Tạo Pause Menu 46](https://anonyviet.com/wp-content/uploads/2021/11/22-11-2021-01-03-29.png)
Sau đó thì mình add thêm cái Custom Font cho nó đẹp.
![[Tạo 2D Platformer Game với Godot] Phần 24: Tạo Pause Menu 49 [Tạo 2D Platformer Game với Godot] Phần 24: Tạo Pause Menu 47](https://anonyviet.com/wp-content/uploads/2021/11/22-11-2021-01-04-37.png)
Color id: a77322
![[Tạo 2D Platformer Game với Godot] Phần 24: Tạo Pause Menu 50 [Tạo 2D Platformer Game với Godot] Phần 24: Tạo Pause Menu 48](https://anonyviet.com/wp-content/uploads/2021/11/22-11-2021-01-04-44.png)
Rồi làm thêm cái custom Styles cho nó vừa mắt.
![[Tạo 2D Platformer Game với Godot] Phần 24: Tạo Pause Menu 51 [Tạo 2D Platformer Game với Godot] Phần 24: Tạo Pause Menu 49](https://anonyviet.com/wp-content/uploads/2021/11/22-11-2021-01-04-52.png)
Và mình có kết quả như trên
![[Tạo 2D Platformer Game với Godot] Phần 24: Tạo Pause Menu 53 [Tạo 2D Platformer Game với Godot] Phần 24: Tạo Pause Menu 51](https://anonyviet.com/wp-content/uploads/2021/11/22-11-2021-01-09-07.png)
Mình thêm cái Control node mới và rename nó lại là PauseMenu và thêm cái Panel để làm Background sau đó rename nó lại.
![[Tạo 2D Platformer Game với Godot] Phần 24: Tạo Pause Menu 54 [Tạo 2D Platformer Game với Godot] Phần 24: Tạo Pause Menu 52](https://anonyviet.com/wp-content/uploads/2021/11/22-11-2021-01-09-14.png)
Sau đó căn chỉnh ra giữa
![[Tạo 2D Platformer Game với Godot] Phần 24: Tạo Pause Menu 55 [Tạo 2D Platformer Game với Godot] Phần 24: Tạo Pause Menu 53](https://anonyviet.com/wp-content/uploads/2021/11/22-11-2021-01-09-27.png)
Mình tạo cái Custom styles mới.
![[Tạo 2D Platformer Game với Godot] Phần 24: Tạo Pause Menu 56 [Tạo 2D Platformer Game với Godot] Phần 24: Tạo Pause Menu 54](https://anonyviet.com/wp-content/uploads/2021/11/22-11-2021-01-10-55.png)
Color: a89d24![[Tạo 2D Platformer Game với Godot] Phần 24: Tạo Pause Menu 57 [Tạo 2D Platformer Game với Godot] Phần 24: Tạo Pause Menu 55](https://anonyviet.com/wp-content/uploads/2021/11/22-11-2021-01-11-07.png)
Ở trên là thông số.
![[Tạo 2D Platformer Game với Godot] Phần 24: Tạo Pause Menu 59 [Tạo 2D Platformer Game với Godot] Phần 24: Tạo Pause Menu 57](https://anonyviet.com/wp-content/uploads/2021/11/22-11-2021-01-13-58.png)
Bạn thêm node MarginConTainer ở dưới Background.
Mình sử dụng margincontainer là để căn lề cho nó đẹp mắt.
![[Tạo 2D Platformer Game với Godot] Phần 24: Tạo Pause Menu 60 [Tạo 2D Platformer Game với Godot] Phần 24: Tạo Pause Menu 58](https://anonyviet.com/wp-content/uploads/2021/11/22-11-2021-01-14-15.png)
Chọn Full rect
![[Tạo 2D Platformer Game với Godot] Phần 24: Tạo Pause Menu 61 [Tạo 2D Platformer Game với Godot] Phần 24: Tạo Pause Menu 59](https://anonyviet.com/wp-content/uploads/2021/11/22-11-2021-01-14-43.png)
Sau đó Theme Overriides -> Constants các bạn điền khoảng là 10 và tuỳ chỉnh theo game của bạn.![[Tạo 2D Platformer Game với Godot] Phần 24: Tạo Pause Menu 62 [Tạo 2D Platformer Game với Godot] Phần 24: Tạo Pause Menu 60](https://anonyviet.com/wp-content/uploads/2021/11/22-11-2021-01-16-30.png)
Add thêm cái Vboxcontainer
![[Tạo 2D Platformer Game với Godot] Phần 24: Tạo Pause Menu 63 [Tạo 2D Platformer Game với Godot] Phần 24: Tạo Pause Menu 61](https://anonyviet.com/wp-content/uploads/2021/11/22-11-2021-01-16-39.png)
Add xong bạn sẽ thấy Vboxcontainer bị thụt vào trong 10mm từ margincontainer.
![[Tạo 2D Platformer Game với Godot] Phần 24: Tạo Pause Menu 64 [Tạo 2D Platformer Game với Godot] Phần 24: Tạo Pause Menu 62](https://anonyviet.com/wp-content/uploads/2021/11/22-11-2021-01-18-38.png)
Add thêm cái Label rename là TieuDe
![[Tạo 2D Platformer Game với Godot] Phần 24: Tạo Pause Menu 65 [Tạo 2D Platformer Game với Godot] Phần 24: Tạo Pause Menu 63](https://anonyviet.com/wp-content/uploads/2021/11/22-11-2021-01-19-17.png)
![[Tạo 2D Platformer Game với Godot] Phần 24: Tạo Pause Menu 66 [Tạo 2D Platformer Game với Godot] Phần 24: Tạo Pause Menu 64](https://anonyviet.com/wp-content/uploads/2021/11/22-11-2021-01-19-22.png)
Chỉnh align là Center để căn giữa
![[Tạo 2D Platformer Game với Godot] Phần 24: Tạo Pause Menu 67 [Tạo 2D Platformer Game với Godot] Phần 24: Tạo Pause Menu 65](https://anonyviet.com/wp-content/uploads/2021/11/22-11-2021-01-19-49.png)
Add thêm cái custom fonts cho nó đẹp mắt![[Tạo 2D Platformer Game với Godot] Phần 24: Tạo Pause Menu 68 [Tạo 2D Platformer Game với Godot] Phần 24: Tạo Pause Menu 66](https://anonyviet.com/wp-content/uploads/2021/11/22-11-2021-01-20-32.png)
Kết quả như trên.
![[Tạo 2D Platformer Game với Godot] Phần 24: Tạo Pause Menu 69 [Tạo 2D Platformer Game với Godot] Phần 24: Tạo Pause Menu 67](https://anonyviet.com/wp-content/uploads/2021/11/22-11-2021-01-24-07.png)
Mình add thêm 3 nút như ảnh và 3 Ninepatchrect làm khoảng trống.
![[Tạo 2D Platformer Game với Godot] Phần 24: Tạo Pause Menu 70 [Tạo 2D Platformer Game với Godot] Phần 24: Tạo Pause Menu 68](https://anonyviet.com/wp-content/uploads/2021/11/22-11-2021-01-28-21.png)
Rồi các bạn add custom fonts và custom styles cho button.
Bạn có thể add hoặc không add đều được.
![[Tạo 2D Platformer Game với Godot] Phần 24: Tạo Pause Menu 71 [Tạo 2D Platformer Game với Godot] Phần 24: Tạo Pause Menu 69](https://anonyviet.com/wp-content/uploads/2021/11/22-11-2021-01-29-23.png)
Bạn save scene lại
![[Tạo 2D Platformer Game với Godot] Phần 24: Tạo Pause Menu 73 [Tạo 2D Platformer Game với Godot] Phần 24: Tạo Pause Menu 71](https://anonyviet.com/wp-content/uploads/2021/11/22-11-2021-01-31-03-300x245.png)
Add thêm cái script ở node PauseMenu
![[Tạo 2D Platformer Game với Godot] Phần 24: Tạo Pause Menu 74 [Tạo 2D Platformer Game với Godot] Phần 24: Tạo Pause Menu 72](https://anonyviet.com/wp-content/uploads/2021/11/22-11-2021-01-34-25-300x238.png)
Rồi connect 4 cái signal của 4 nút vào.
![[Tạo 2D Platformer Game với Godot] Phần 24: Tạo Pause Menu 75 [Tạo 2D Platformer Game với Godot] Phần 24: Tạo Pause Menu 73](https://anonyviet.com/wp-content/uploads/2021/11/22-11-2021-01-49-07-300x77.png)
Rồi hide cái pause menu đi vì mình chỉ hiện nó khi mà mình bấm nút hiện thôi.
func _on_NutTiepTuc_pressed():
get_tree().paused = false
$PauseMenu.hide()
Code ở nút tiếp tục.
get_tree().paused = false : mình sẽ bảo cái tree là tiếp tục hoạt động.
$PauseMenu.hide() : mình sẽ ẩn cái PauseMenu đi vì mình muốn tiếp tục chơi game.
func _on_NutChoiLai_pressed(): get_tree().paused = false get_tree().reload_current_scene() pass # Replace with function body.
get_tree().reload_current_scene() : mình sẽ kêu cái tree chạy lại cái scene.
func _on_NutVeMenu_pressed():
get_tree().paused = false
get_tree().change_scene("res://Scences/Map/LevelMap.tscn")
pass # Replace with function body.
get_tree().change_scene("res://Scences/Map/LevelMap.tscn"): là mình sẽ di chuyển sang scene Level Map.
func _on_HienPauseMenu_pressed():
$PauseMenu.show()
get_tree().paused = true
pass # Replace with function body.
$PauseMenu.show() : là mình sẽ hiển thị cái PauseMenu lên vì nó đang ẩn.
get_tree().paused = true :là mình sẽ gọi cái tree hiện tại và kêu nó dừng lại. Khi dừng lại là mọi node trên tree sẽ ngưng hoạt động.
extends CanvasLayer
func _on_NutTiepTuc_pressed():
get_tree().paused = false
$PauseMenu.hide()
func _on_NutChoiLai_pressed():
get_tree().paused = false
get_tree().reload_current_scene()
pass # Replace with function body.
func _on_NutVeMenu_pressed():
get_tree().paused = false
get_tree().change_scene("res://Scences/Map/LevelMap.tscn")
pass # Replace with function body.
func _on_HienPauseMenu_pressed():
$PauseMenu.show()
get_tree().paused = true
pass # Replace with function body.
Vậy mình sẽ có full code là như này.
![[Tạo 2D Platformer Game với Godot] Phần 24: Tạo Pause Menu 76 [Tạo 2D Platformer Game với Godot] Phần 24: Tạo Pause Menu 74](https://anonyviet.com/wp-content/uploads/2021/11/22-11-2021-01-55-27-198x300.png)
Và ở PauseMenu bên Inspector bạn cần chỉnh pause mode về Process để khi cái tree nó pause nhưng mà PauseMenu vẫn hoạt động được.
![[Tạo 2D Platformer Game với Godot] Phần 24: Tạo Pause Menu 77 [Tạo 2D Platformer Game với Godot] Phần 24: Tạo Pause Menu 75](https://anonyviet.com/wp-content/uploads/2021/11/22-11-2021-02-07-57-300x293.png)
Sau đó Instance vào Map.
![[Tạo 2D Platformer Game với Godot] Phần 24: Tạo Pause Menu 78 [Tạo 2D Platformer Game với Godot] Phần 24: Tạo Pause Menu 76](https://anonyviet.com/wp-content/uploads/2021/11/22-11-2021-02-07-33.png)
Đây là kết quả của mình
Level Map
À mình quên mất ở mấy phần trước đó là add thêm cái nút quay về ở scene Level map để quay về Menu chính.
![[Tạo 2D Platformer Game với Godot] Phần 24: Tạo Pause Menu 79 [Tạo 2D Platformer Game với Godot] Phần 24: Tạo Pause Menu 77](https://anonyviet.com/wp-content/uploads/2021/11/22-11-2021-02-02-30.png)
![[Tạo 2D Platformer Game với Godot] Phần 24: Tạo Pause Menu 81 [Tạo 2D Platformer Game với Godot] Phần 24: Tạo Pause Menu 79](https://anonyviet.com/wp-content/uploads/2021/11/22-11-2021-02-04-24.png)
Bạn thêm cái node Button rồi rename lại. Sau đó, thêm custom fonts, custom styles.
![[Tạo 2D Platformer Game với Godot] Phần 24: Tạo Pause Menu 83 [Tạo 2D Platformer Game với Godot] Phần 24: Tạo Pause Menu 81](https://anonyviet.com/wp-content/uploads/2021/11/22-11-2021-02-05-24-300x87.png)
Tạo cho mình cái script ở Level Map.
Sau đó kết nối tín hiệu ở node QuayVe vào.
extends Node2D
func _on_QuayVe_pressed():
get_tree().change_scene("res://Scences/UI/Menu.tscn")
pass # Replace with function body.
Về code mình có như trên.
![[Tạo 2D Platformer Game với Godot] Phần 24: Tạo Pause Menu 84 [Tạo 2D Platformer Game với Godot] Phần 24: Tạo Pause Menu 82](https://anonyviet.com/wp-content/uploads/2021/11/22-11-2021-02-06-54.png)
Và mình có kết quả như trên
Tổng Kết
Vậy trong phần này mình đã hướng dẫn bạn cách để có thể tạo pause menu cho game.
Câu hỏi thường gặp
Làm thế nào để tạo một menu tạm dừng trong game Godot 2D Platformer của tôi?
Bạn cần tạo một CanvasLayer, thêm các nút (buttons) và các phần tử giao diện người dùng (UI elements) khác vào đó. Sau đó, viết script để hiển thị và ẩn menu, đồng thời điều khiển trạng thái tạm dừng của game bằng get_tree().paused = true/false.
Tôi có cần phải sử dụng các kiểu tùy chỉnh (custom styles) và font chữ không?
Không bắt buộc, nhưng sử dụng các kiểu tùy chỉnh sẽ giúp menu của bạn trông chuyên nghiệp và hấp dẫn hơn. Bạn có thể tùy chỉnh màu sắc, phông chữ, và kích thước để phù hợp với phong cách game của bạn.
Menu tạm dừng có thể thực hiện các chức năng nào ngoài tiếp tục, chơi lại và thoát?
Tùy thuộc vào thiết kế game của bạn. Bạn có thể thêm các chức năng khác như chỉnh âm thanh, xem hướng dẫn, hoặc truy cập vào menu cài đặt.












