[Lập Trình Game] Bài 9: Tạo MENU cho Game khi lập trình bằng Godot
Tiếp nối series lập trình game với godot trong bài này mình sẽ hướng dẫn các bạn tạo UI cho game của mình nhé. User Interface (UI) là bộ mặt của Game, khi chơi game bạn cần phải có giao diện để thấy được các nhân vật, khung cảnh của game. Hôm nay chúng ta sẽ thiết lập UI, cụ thê là Tạo MENU cho game bằng Godot Engine.
Thiết kế giao diện Menu
Các bạn tạo sence mới cho mình
Chọn User Interface > Đổi tên thành TitleMenu hoặc gì đó mà bạn muốn
Tìm cho mình VboxContainer
Ở đây Vboxcontainer là Node mà nó sẽ chứa các node cho ui của bạn
Để ý phần Margin bên setting
Bây giờ các bạn phải setup cho nó vừa màn hình bằng các chỉnh phần margin hoặc là kéo nó ra để chỉnh cũng được :v.
Và dưới đây là khi mình setup xong
Tiếp tìm cho mình TextureRect và đổi thành Logo
Ở đây chúng ta sẽ cho logo của mình vào. Nếu bạn không có logo thì có thể vào web dưới đây để tạo
Và đây là khi mình đã tạo xong nha
Các bạn nhấn Download the Image để tải về
Sau đó add vào thư mục game
Rồi tiếp theo các bạn kéo logo vào texture của Node Logo
Nó khá lệnh ở phần stretch Node chọn : Keep Centered
Nó sẽ ra giữa
Và tạo cho mình thêm 1 node là HboxContainer và đổi tên là TrungTam
Và cái node này sẽ chứa những button của bạn
Tìm SizeFlags và chọn Expend cho cả 2 cái là Hoz và Ver ở phần settings HboxContainer
Tạo thêm 1 VboxContainer ở TrungTam và Click Expand cho cả 2 cái là Hoz và Ver
Tiếp đến là button
Tạo cho mình Node Button dưới VboxContainer
Và tạo Node Label dưới Node Button(Tro Choi Moi)
Để ý sẽ thấy phần đen đen ở dưới Logo
Ở Button(Tro Choi Moi) Click chọn Flat nó sẽ mất
Và Tiếp theo chúng ta sẽ add Custom Font cho nó
Label > Custom Fonts > Click chọn Font > Rồi Nhấn Vào Empty > chọn Dynamic Font
Sau đó nhấn vào Dynamic Font
Ở Font Data > Empty > Load > chọn font của bạn
Link Download ở dưới cuối bài
Ở phần Settings chỉnh lại size cho vừa
Tiếp đến chúng ta sẽ lưu font lại để sau này nếu cần sẽ lấy ra sài cho tiện
Click chuột phải vào dynamic font > save
Save lại dưới dạng .tres
Và tiếp theo chúng ta sẽ tạo effect nó à trước tiên hãy ghi text vào:
Phần Custom Constans > click 2 cái shadow trên và dưới
Nhấn Font Color Shadow > edit màu
Và chúng ta sẽ được như này.Các bạn cũng có thể edit màu lại
Phần layout > chọn full rect
Và bây giờ chúng ta sẽ nhân đôi button để tạo thêm cho dễ
Save as sence cho mình.Save ở đâu cũng được.Mà mình khuyên nên làm folder cho nó dễ chứ trước đây khi mới học mình làm project, làm không biết lưu folder toàn vứt 1 đống ở đó đến lúc tìm như mò kim đáy bể =))
Mở Sence vừa lưu lên
Chọn sence > new Inherited Sence
Rồi nhấn vào Tro Choi Moi rồi nhấn open
Nó sẽ cho bạn 1 bản sence copy
Đổi tên lại thành TiepTuc
Rồi làm thêm cái bản sao Thoát Game Nữa
Rồi lại thêm cái Cài Đặt Nữa
Instance sence mới
Add 3 cái vừa tạo
Làm xong nó như này:
À mình quên chỉnh lại cho mấy bạn :vv
Vô 4 cái sence vừa tạo tìm Rect > Min Size > đổi như ảnh và khi làm 1 cái nó sẽ áp dụng cho cả 4 cái
Nếu có cái nào mà min size không thay đổi gì thì các bạn vô đổi
Trò chơi mới đã đổi
Tiếp đến là 3 cái kia. Làm cả 3 cái > Rect > min size > nhấn cái hình tròn rs
Done
Add cho mình Center Container dưới nodeTrungtam nhé node Center này sẽ là node dùng để up ảnh bên cạnh 4 nút kìa
Và cũng expand cho nó
Rồi add texture rect vào sau đó đưa logo của bạn vào
Tạo 1 cái label ở VBoxContainer
Label Fill và Expand ở vertical
Tạo dynamic font mới vì ở đây chúng ta sẽ tạo kích cỡ chữ khác
Tạo như vừa nãy thôi
Chỉnh size cho vừa mắt bạn
Click chọn 2 ô: use mipmaps và use filter
Tiếp đến add background vào
Và chúng ta đã được 1 Menu
Menu này gần hoàn chỉnh nhé phần Tiếp Tục – Cài đặt sẽ được hướng dẫn trong 4-8 bài nữa
Trò chơi mới + thoát game sẽ được Code ngay sau đây
CODE Menu Game
Tạo cho mình 1 script ở tro choi moi
Rồi code như dưới
Đoạn code trên giúp bạn có thể bỏ sence muốn trỏ đến vào button
Bạn có thể bỏ sence vào như ảnh trên
Và tiếp đến
Chúng ta sẽ connect nó
Nhấn vào Node > Pressed() > connect
Bạn connect bằng node nào thì chọn node đó
Ở đây mình connect bằng Tro choi moi nên mình sẽ connect tới tro choi moi
Cái này là truyền tín hiệu cho node
Connect pressed() nghĩa là khi nhấn vào cái nút trò chơi mới thì nó sẽ truyền tín hiệu về Node để nhận dữ liệu rồi sau đó thực hiện các hành động của bạn.
Đây là sau khi connect nó sẽ cho chúng ta 1 hàm
Code như sau:
Get_tree().change_sence() là 1 câu lệnh giúp bạn thay đổi sence
Change_sence() có 2 kiểu:
1 là kiểu ở trên ảnh khai báo biến bosencevao nghĩa là bạn có thể bỏ sence vào đó rồi sau đó get_tree().change_sence(bosencevao) là nó sẽ trỏ tới sence mà bạn bỏ vào
2 là get_tree().change_sence(“địa chỉ của sence”)
Và tiếp theo chúng ta sẽ tạo script cho 3 cái còn lại và cũng connect như trên và code như trên riêng cái thoatgame thì không cần code
Làm tương tự 3 cái Tro choi moi – tiep tuc- cai dat nhé
Còn ở thoat game thì làm như sau
Cũng connect lại
Và code như sau
Get_treE().quit() nghĩa là khi nhấn vào nó sẽ quit game luôn
Và tiếp theo bỏ sence vào là xong thôi
Note:Riêng Cài Đặt và Tiếp Tục Không Bỏ Sence Vào nhé phần đó mình sẽ hướng dẫn sau
Mình sẽ bỏ sence world vào
Tiếp theo đến phần set main sence khi F5 nó sẽ chạy cái sence mà đã set
Project > Project Settings > Run > Main Sence > Nhấn Vô Icon Thư mục
Chọn cái menu screen mà chúng ta đã làm nãy giờ
Và nhấn F5 nó sẽ chạy sence của bạn
Và thế là xong rồi :3. Hẹn gặp lại trong bài tiếp theo hehe
Deathgm!