113
社区成员
发帖
与我相关
我的任务
分享| 这个作业属于哪个课程 | https://bbs.csdn.net/forums/2401_CS_SE_FZU |
|---|---|
| 这个作业要求在哪里 | https://bbs.csdn.net/topics/619470310 |
| 这个作业的目标 | 总结过去 |
| 其他参考文献 | 《构建之法》、CSDN |
目录
GDScript:
GDScript是Godot的默认脚本语言,专为游戏开发设计,语法类似于Python,易于学习和使用
它是动态类型的,提供了简洁的语法和快速的编译与加载速度
GDScript与Godot编辑器紧密集成,支持节点、信号和场景的代码补全
内置了向量和变换类型,适合进行线性代数计算,这对于游戏开发非常关键
支持多线程,并且没有垃圾回收机制,内存管理通过引用计数自动进行,但也可以在需要时手动控制
是渐进类型的,变量默认是动态类型,但可以使用类型提示进行强类型检查
GDScript 是 Godot 引擎的默认脚本语言,它受到了 Python 的影响,因此具有简洁和易读的特性。以下是 GDScript 的详细介绍,包括其语法、函数、特性等。
GDScript 的语法类似于 Python,这意味着它使用缩进来定义代码块,而不是像 C 语言那样的大括号。
# 这是一条注释
# 变量声明
var my_variable = 10
# 条件语句
if my_variable > 5:
print("my_variable is greater than 5")
# 循环
for i in range(5):
print(i)
GDScript 支持多种数据类型,包括:
int)float)String)bool)Vector2, Vector3)Transform, Transform2D)Color)signal)ResourcePath)在 GDScript 中,函数使用 func 关键字定义:
func my_function(param1, param2):
print("Hello, ", param1, " and ", param2)
return param1 + param2
GDScript 使用 class 关键字定义类,并且每个类都应该继承自 Node 或其子类:
extends Node
func _ready():
print("Node is ready!")
GDScript 支持信号,这是一种 Godot 特有的通信方式,用于在不同节点之间传递消息:
signal my_signal
func _ready():
emit_signal("my_signal")
GDScript 支持单继承,这意味着一个类只能继承自一个父类:
extends Node
func _ready():
print("I am a Node!")
GDScript 使用 try-except 语句进行错误处理:
try:
var result = potentially_dangerous_operation()
except SomeError as e:
print("An error occurred: ", e)
从 Godot 3.1 开始,GDScript 支持静态类型和类型提示,这有助于提高性能和减少运行时错误:
var my_int: int = 5
var my_string: String = "Hello"
GDScript 提供了许多内置函数,例如 print()、preload()、assert() 等。
由于 GDScript 是动态类型的,它在性能上可能不如静态类型的语言如 C#。但是,对于大多数游戏开发任务来说,这种性能差异是可以接受的。
GDScript 与 Godot 编辑器紧密集成,提供了代码补全、调试、错误检查等功能。
GDScript 是一种为 Godot 引擎量身定制的脚本语言,它的设计目标是简单、易学且高效。它提供了游戏开发所需的所有基本功能,并且与 Godot 的节点系统和信号系统无缝集成。虽然它可能不适合需要高性能计算的大型项目,但对于大多数游戏开发任务来说,GDScript 是一个非常好的选择。



extends Node2D
onready var animated_sprite = $AnimatedSprite
onready var timer = $Timer
var current_frame = 0
func _ready():
timer.start() # 启动计时器
func _on_Timer_timeout():
current_frame += 1
if current_frame > 2: # 总共有 3 帧(索引从 0 到 2)
current_frame = 0
animated_sprite.frame = current_frame # 切换到当前帧
报错:Unindent doesn't match the previous indentation level.表示没有链接到正确的组件
解决:在 Inspector 中,将 AnimatedSprite 的 Animation 属性设置为你创建的动画名称(例如 "animation")。
extends Area2D
var body_in = false # 用于跟踪玩家是否在区域内
# 当角色进入 Area2D 时触发
func _on_area_2d_body_entered(body: Node2D) -> void:
if body.name == "Player":
body_in = true # 玩家进入区域时设置为 true
# 当角色离开 Area2D 时触发
func _on_area_2d_body_exited(body: Node2D) -> void:
if body.name == "Player":
body_in = false # 玩家离开区域时重置为 false
# 每帧调用,用于检查输入
func _process(delta: float) -> void:
if body_in and Input.is_action_just_pressed("ui_accept"): # 检查是否在区域内并按下 E 键
DialogueManager.show_dialogue_balloon(load('res://对话/111.dialogue'), "start")
报错导致角色进入区域不会场景转换
解决:在 Inspector 中,将 DialogueManager 的 Dialogue 属性设置为你创建的对话脚本的名称(例如 "dialogue_script")。在 Editor Settings 中确认设置:
打开 Project -> Project Settings。
选择 Editor -> Editor Settings。
找到 Text Editor -> Indentation,确保 Use Tabs 被禁用,并设置 Tab Size 为 4。
GDScript 是一门高效、简单的脚本语言,特别适合快速开发 2D 和 3D 游戏。学习 GDScript 的关键在于理解 Godot 的场景树结构、熟练使用信号机制,以及多实践小型游戏项目。
参考