HOME / 第 2 部分 · 核心概念与 GDScript 语法 / 第 15 课
MODULE 2 · 核心概念与 GDScript 语法
第 15 课 · 函数与作用域
🎯 本课学习目标
- 学会定义和调用函数
- 掌握参数、返回值、默认参数
- 理解局部变量与全局变量的作用域
函数把「一段功能」打包复用。本课系统掌握函数的定义、调用与作用域。
📖 详细教学步骤
定义与调用函数语法
用 func 定义函数:
GDSCRIPTextends Node2D
func _ready():
say_hello() # 调用函数
say_hello() # 可以重复调用
func say_hello():
print("你好,我是函数!")
参数:让函数接受输入语法
函数可以接收参数,让同一段逻辑处理不同数据:
GDSCRIPTfunc _ready():
attack(10) # 参数为 10
attack(25) # 参数为 25
heal(20, "玩家")
func attack(damage: int):
print("造成 ", damage, " 点伤害")
func heal(amount: int, who: String):
print(who, " 恢复 ", amount, " 生命")
返回值:函数给出结果语法
用 return 返回结果,调用处可以接收:
GDSCRIPTfunc _ready():
var total = add(3, 4) # total = 7
print(total)
var double = multiply_by_two(total) # 14
print(double)
func add(a: int, b: int) -> int:
return a + b
func multiply_by_two(n: int) -> int:
return n * 2
默认参数语法
参数可以给默认值,调用时可省略:
GDSCRIPTfunc _ready():
greet("小明") # 用默认问候
greet("小红", "晚上好") # 自定义问候
func greet(name: String, msg: String = "你好"):
print(msg, ",", name)
作用域:变量可见范围重点
变量有「可见范围」,区分清楚很重要:
GDSCRIPTvar hp = 100 # 脚本级变量:整个脚本都能用(成员变量)
func _ready():
var temp = 5 # 局部变量:只在 _ready 里能用
print(hp, temp) # ✅ 都可以
func other():
print(hp) # ✅ 成员变量可用
# print(temp) # ❌ 报错!temp 是 _ready 的局部变量
var temp = 9 # ✅ 可以重新声明同名的局部变量
函数的组织习惯规范
- 每个函数只做一件事(职责单一)
- 函数名用动词开头:move()、attack()、take_damage()
- 重复的代码抽成函数,避免复制粘贴
- 适当写注释说明函数用途
⚠️
调用函数时参数个数不匹配报错?
调用时传入的参数个数必须与定义一致(有默认参数的除外)。检查函数定义和调用处。
⚠️
函数里访问不到外面的局部变量?
这是作用域问题。局部变量只在它所在的函数内有效,需要跨函数共享的数据用成员变量(脚本顶部 var 声明)。
🧪 动手试一试
🏋️ 课后练习
定义一个计算圆面积的函数 area_of_circle(radius),返回面积;再定义一个攻击函数,根据传入的伤害值扣血并返回是否死亡。
func area_of_circle(r: float) -> float: return 3.14159 * r * r
💡
返回值用 -> 类型 标注,会让错误提前暴露。
💡
把常用逻辑写成函数,你的代码会越来越整洁、可复用。
🎓 本课小结
函数用 func 定义,支持参数、返回值、默认参数;成员变量全脚本可见,局部变量只在函数内可见;一个函数只做一件事。