目录
Godot 4 基础数据类型使用教程
以下是 Godot 4 (GDScript) 中基础数据类型的完整教程,按类别分块讲解。
一、标量类型(Scalar Types)
1. int — 整数
64 位有符号整数,范围 (-2^{63}) ~ (2^{63}-1)。
var health: int = 100
var score: int = -5
var hex_val: int = 0xFF # 十六进制 → 255
var bin_val: int = 0b1010 # 二进制 → 10
# 运算
var a = 10 / 3 # 结果为 3(整数除法截断)
var b = 10.0 / 3 # 结果为 3.333(浮点除法)
var c = 10 % 3 # 取余 → 1
注意:两个 int 相除结果仍为 int(截断),想要浮点结果需至少一方为 float。
2. float — 浮点数
64 位双精度浮点数(IEEE 754)。
var speed: float = 5.5
var pi: float = 3.14159
var scientific: float = 1.2e5 # → 120000.0
# 常用数学函数(内联)
var rounded = round(3.7) # → 4.0
var floored = floor(3.7) # → 3.0
var ceiled = ceil(3.2) # → 4.0
var clamped_val = clamp(15, 0, 10) # → 10(限制范围)
var lerped = lerp(0.0, 100.0, 0.5) # → 50.0(线性插值)
# 浮点精度陷阱
if abs(a - b) < 0.0001: # 不要用 == 比较浮点数
print("大致相等")
3. bool — 布尔值
var is_alive: bool = true
var is_dead: bool = false
# 隐式转换规则
var x = bool(1) # → true
var y = bool(0) # → false
var z = bool("") # → false(空字符串)
var w = bool("hi") # → true(非空字符串)
# 逻辑运算
var result = true and false # → false
var result2 = true or false # → true
var result3 = not true # → false
4. String / StringName — 字符串
# String — 可变字符串
var greeting: String = "Hello, Godot!"
var path: String = "C:\\Users\\Game" # 转义反斜杠
var multi: String = """
多行字符串
第二行
"""
# 字符串插值
var name = "Player"
var level = 5
var msg = "Welcome, {name}! Level {lv}".format({"name": name, "lv": level})
var msg2 = f"Score: {score}" # Godot 4.4+ 支持 f-string
# 常用方法
var upper = "hello".to_upper() # → "HELLO"
var left = "hello".left(3) # → "hel"
var replaced = "a-b-c".replace("-", "_") # → "a_b_c"
var parts = "1,2,3".split(",") # → ["1", "2", "3"]
var trimmed = " hi ".strip_edges() # → "hi"
# StringName — 不可变字符串,用于高频比较(如信号名、节点名)
var signal_name: StringName = &"health_changed" # & 前缀创建 StringName
var node_name: StringName = ^"Player" # ^ 前缀(仅限字符串字面量)
| 特性 | String | StringName |
|---|---|---|
| 可变性 | 可变 | 不可变(内部缓存) |
| 比较速度 | 较慢(逐字符) | 极快(比较内部 ID) |
| 适用场景 | 文本处理、显示 | 信号名、属性名、节点路径 |
| 创建方式 | "text" |
&"text" 或 ^"text" |
二、数学向量类型(Vector Types)
1. Vector2 / Vector2i
# Vector2 — 2D浮点向量
var pos: Vector2 = Vector2(100, 200)
var vel: Vector2 = Vector2.RIGHT * 50 # → (50, 0)
var diagonal = Vector2.ONE # → (1, 1)
# 常用操作
var length =


199

被折叠的 条评论
为什么被折叠?



