[Tuts] GDSCRIPT – Godot Engine cơ bản

designnt

Member
Jul 25, 2013
405
1
6
33
Chào các bạn! Tiếp tục với series Hướng dẫn cơ bản về Godot Engine. Bài viết hôm nay mình sẽ chia sẻ với các bạn về GDScript của Godot Engine. Bài viết gồm 2 phần là GDScript cơ bản và Hướng đối tượng trong GDScript. Trước khi vào phần 1 thì chúng ta bắt đầu tìm hiểu sơ lược về GDScript nhé!

SƠ LƯỢC VỀ GDSCRIPT


GDScript là ngôn ngữ lập trình bậc cao. Nó sử dụng cú pháp tương tự như Python (các khối dựa trên thụt lề và nhiều từ khóa tương tự nhau). Nó được tối ưu hóa và tích hợp chặt chẽ với Godot Engine, cho phép linh hoạt tuyệt vời để tạo và tích hợp nội dung cho game. Nếu bạn đã quen sử dụng Python rồi thì việc code với GDScript vô cùng dể dàng!

GDSCRIPT - Godot Engine cơ bản


GDSCRIPT CƠ BẢN

1. Cấu trúc một script.gd


giới thiệu GDSCRIPT CƠ BẢN


extends Node # Khai báo kế thừa. Phải kế thừa đúng tên lớp (tên Node) mà bạn sử dụng.
var a = 0 # Biến toàn cục

var b = 0 # Biến toàn cục

func _ready(): # Hàm

. var c = a + b # Biến cục bộ
2. GDSCRIPT CƠ BẢN

Các hàm chính trên GDScript

extends Node
func _init(): #Thực thi một lần duy nhất khi khởi chạy chương trình.

. pass

func _ready(): #Thực thi một lần duy nhất khi Node sẵn sàng hoạt động.

. pass

func _process(delta): #Hàm luôn thực thi lặp lại trong mỗi thời gian delta bằng nhau (không phùhợp cho các hoạt động vật lí)

. pass

func _physics_process(delta): #Hàm thực thi lặp lại trong mỗi thời gian delta tăng dần (thích hợpcho hoạt động vật lí)

. pass
Lệnh in Debug trên cửa sổ Console

func _ready():
. var a = 4

. print(a);

. print("\nHello World")

Output:

4

Hello Word
Kiểu dữ liệu, biến, hằng và cách khai báo


Các kiểu dữ liệu trên GDScript cũng tương tự trên Python có 2 dạng là kiểu nguyên thủy (không viết hoa kí tự đầu) và kiểu lớp (có viết hoa kí tự đầu).

extends Node
#var <tên biến> : [kiểu dữ liệu] (có thể "=" để gán giá trị trực tiếp mà không cần khai báo kiểu dữ kiệu (ép kiểu ngầm))

var a = 4

var a: int = 4

var a

a = 4

#các kiểu khai báo trên là tương tự như nhau. Ngoài ra ta còn có thể khai báo var a:=4.

const a = 4 #khai báo hằng. Lưu ý phải gán giá trị cho hằng.

var ab = Vecto2(0,0) # Biến kiểu lớp

var arr = [1, 2, 3] #khai báo mảng

var d = {2: 3, 4: "Hello"} #khai báo từ điển
Cấu trúc điều kiện IF…THEN…ELSE

func _ready():
# if(<điều kiện>):

# [tập lệnh phía sau dấu tab phải thẳng hàng]

# else:

# [tập lệnh phía sau dấu tab phải thẳng hàng]

. var a = false

. var b = 0

. if(a):

. b = 1

. else:

. b = 2
Cấu trúc Match

func _ready():
. var a = 0

. Match(a):

. 1:

. [tập lệnh phía sau dấu tab phải thẳng hàng]

. 2:

. [tập lệnh phía sau dấu tab phải thẳng hàng]
Vòng lặp For

func _ready():
. for i in 5:

. [tập lệnh phía sau dấu tab phải thẳng hàng]

. for i in range(5):

. [tập lệnh phía sau dấu tab phải thẳng hàng]

#i chạy từ 0 đến 5-1
Vòng lặp While

func _ready():
. while(<điều kiện>):

. [tập lệnh phía sau dấu tab phải thẳng hàng]
HƯỚNG ĐỐI TƯỢNG TRONG GDSCRIPT


Tạo và sử dụng lớp là 2 công việc thiết yếu trong lập trình hướng đối tượng. Dưới đây là công thức tạo và sử dụng lớp trên GDScript.

Tạo lớp


Xây dựng các thuộc tính (biến) và các phương thức (các hàm khởi tạo cho đối tượng)

class Math: #tên lớp
. var total #thuộc tính

. static func _sum(a: int, b: int) -> int: #phương thức

. return a+b
Sử dụng lớp (tạo đối tượng tương ứng với lớp)

#var <tên biến file script> = preload("đường dẫn script")
var MathGD = preload("Math.gd")

func _ready():

# var <tên biến> = <tên biến script>.<tên lớp>.new()

. var a = MathGD.Math.new()

. print(a.sum(1,2))

Output: 3

Ngoài ra ta còn có thể sử dụng lớp bằng cách sử dụng kế thừa bằng extends. Lưu ý: Nếu bạn tạo lớp có kế thừa các lớp mặc định trong Godot thì ở script sử dụng lớp phải gán cho Node có cùng kiểu với lớp mà bạn đã khởi tạo trước đó và sử dụng.

Bài viết hôm nay mình đã giới thiệu và chia sẻ với các bạn GDScript cơ bản trên Godot Engine. Nếu có thắc mắc hãy để lại bình luận hoặc góp ý nhé! Để nắm rõ hơn các bạn có thể tham khảo thêm các video cơ bản tại https://www.youtube.com/playlist?list=PLOk8LhtEwUVn8e3RUfk-rX_RB3f9_ulYg. Xin cảm ơn các bạn đã theo dõi bài viết!


Sưu tầm và Tổng hợp
www.hanoiyeu.com