8.Godot 函数|变量|运算符|条件循环语句

本文详细介绍了Godot游戏引擎中的函数概念、参数传递、返回值、内置虚函数、变量作用域、运算符、条件语句(if,elif,else,match)、循环语句(while)及其注意事项。

函数

函数的概念
  • 函数也叫方法或模块,是一套操作的集合。函数也包括自定义函数与内置函数。当它被调用时执行的可重复使用的代码块

  • 大部分内置函数可以对游戏内容产生实质性的影响或在代码中起到传递数据的作用。少部分函数比较特殊。

  • 一个函数除名称外,还包括了 【输入信息、处理流程、处理结果】等关键信息。在程序中,一切数据的处理流程都要通过调用函数来实现。

  • 函数调用一般必须指明调用对象

  • 空函数需要使用pass关键字

func sayHello():
    # 执行代码
  • 调用带参数的函数,在调用函数时,您可以向其传递值,这些值被称为参数。
func sayHello(param1, param2):
    # 执行代码
  • 带有返回值的函数,有时,我们会希望函数将值返回调用它的地方,通过使用 return 语句就可以实现。
  • return方法可以指定返回的类型
func sayHello(param1, param2):
    # 执行代码
    return x
内置虚函数的调用
  • 虚函数是指没有实际处理流程的函数,这部分函数的内容可以由我们自行编写。而内置虚函数则是指 Godot 的制作组规定了特定名称却没有实际处理流程的函数。节点内的虚函数会在特定的条件下自动被触发。
  • 条件 1:当节点本身或其周围节点状态发生改变时。【节点创建、节点入“树”、节点出“树”、节点死亡前、节点的子节点全部加入场景树·】
  • 条件 2:当场景树的状态发生改变时,且节点自身处于“树”下。【画面刷新、物理引擎刷新、硬件设备输入】
  • 条件 3:其他情况。
  • 常用虚函数:_init,ready,_process,_physic_process

函数中的变量

  • 函数中也可以定义变量,各个函数都拥有一个独立的作用域,在一个函数内部定义的变量无法在另一个函数中直接访问变量名。
  • 在函数运行结束后变量和变量所代表的数据会自动销毁。某些情况下,变量所代表的数据不会自动销毁,(后续教程提及)但变量一定会自动销毁。
  • 局部作用域,变量在函数内声明,变量为局部作用域,只能在函数内部访问
# 此处不能调用 carName 变量
func myFunction():
    var carName = "Volvo";
    # 函数内可调用 carName 变量
  • 全局变量,变量在函数外定义,即为全局变量,整个脚本文件中都可以使用
var carName = " Volvo";
 
# 此处可调用 carName 变量
func myFunction():
    # 函数内可调用 carName 变量

运算符

  • 算术运算符
+	加法	        x=y+2	7	5
-	减法	        x=y-2	3	5
*	乘法	        x=y*2	10	5
/	除法	        x=y/2	2.5	5
%	取模(余数)	x=y%2	1	5
  • 赋值运算符,赋值运算符用于给 GdScript 变量赋值
=	x=y	 	x=5
+=	x+=y	x=x+y	x=15
-=	x-=y	x=x-y	x=5
*=	x*=y	x=x*y	x=50
/=	x/=y	x=x/y	x=2
%=	x%=y	x=x%y	x=0
  • 比较运算符,比较运算符在逻辑语句中使用,以测定变量或值是否相等
==	等于	x==8	false
!=	 不等于	x!=8	true
>	 大于	x>8	false
<	 小于	x<8	true
>=	 大于或等于	x>=8	false
<=	 小于或等于	x<=8	true
  • 逻辑运算符,逻辑运算符用于测定变量或值之间的逻辑。
&&	and	(x < 10 && y > 1) 为 true
||	or	(x==5 || y==5) 为 false
!	not	!(x==y) 为 true

条件语句

if 的作用
  • 通常在写代码时,您总是需要为不同的决定来执行不同的动作。您可以在代码中使用条件语句来完成该任务。
  • 使用 if 可以在函数中设置情况分支,起到控制数据处理流程的作用
elif 以及 else
  • elif 是 if 的补充,一个 if 可以有无数个 elif 对其进行补充。
  • 当所有的 if 与 elif 判断失败时,程序执行 else 内部内容。一个 if 后只能有一个对应的else
作用域
  • 一个 if 与它对应的 elif 以及 else 都有各自独立的作用域,作用域内定义的变量互相独立。

  • if 语句 - 只有当指定条件为 true 时,使用该语句来执行代码

if (condition):
    当条件为 true 时执行的代码
  • if…else 语句 - 当条件为 true 时执行代码,当条件为 false 时执行其他代码
if (condition):
    当条件为 true 时执行的代码
else:
    当条件不为 true 时执行的代码
  • if…else if…else 语句- 使用该语句来选择多个代码块之一来执行
if (condition1):
    当条件 1 为 true 时执行的代码
elif (condition2):
    当条件 2 为 true 时执行的代码
else:
  当条件 1 和 条件 2 都不为 true 时执行的代码
  • match(switch) 语句 - 使用该语句来选择多个代码块之一来执行

10. 循环语句

while的作用
  • 循环可以将代码块执行指定的次数,如果您希望一遍又一遍地运行相同的代码,并且每次的值都不同,那么使用循环是很方便的
while 的使用方法
  • while 与 if 写法一致,但没有 elif 与 else
  • 当 while 内部模块执行完毕时,程序会再次判断 while 是否成立,若成立则会继续执行 while 内容。
while 的注意事项
  • 避免死循环。要设置破坏循环条件的代码。

  • while 也会产生一个作用域,效果同 if。

  • for

  • while

  • break 语句跳出循环后,会继续执行该循环之后的代码(如果有的话)

  • continue 语句中断循环中的迭代,如果出现了指定的条件,然后继续循环中的下一个迭代

<think> 我们正在解决用户提出的“没有project.godot文件”的问题。根据之前的对话历史,用户可能在使用Godot引擎时遇到了问题。 根据引用[1]提到Godot在世界各地使用,支持Unicode和字体处理,但这不是当前问题的直接相关引用。 引用[2]是关于在Linux系统上编译Godot Mono版本的步骤,也与当前问题无关。 引用[3]提到通过ProjectSettings单例获取项目设置,这暗示了project.godot文件的重要性,因为该文件存储了项目的配置。 用户当前的问题是没有project.godot文件,我们需要提供解决办法。 在Godot引擎中,project.godot文件是项目的核心配置文件,它位于项目根目录下。如果缺失,会导致项目无法被识别。 可能的原因及解决办法: 1. **项目目录错误**:用户可能没有在正确的目录下查找。该文件应该在项目根目录(即包含游戏资源的文件夹)下。 - 解决办法:检查当前目录是否正确,确保在项目根目录下查找。 2. **文件被隐藏或误删**:在文件系统中,该文件可能被隐藏(以点开头),或者被意外删除。 - 解决办法:显示隐藏文件(在Linux/macOS下使用`ls -a`,在Windows下在文件资源管理器中设置显示隐藏文件)。如果被删除,尝试从回收站恢复。 3. **未初始化项目**:如果这是一个新项目,可能还没有创建project.godot文件。 - 解决办法:通过Godot编辑器创建项目。打开Godot,选择“新建项目”,指定项目路径,Godot会自动生成project.godot文件。 4. **项目损坏**:项目文件可能损坏。 - 解决办法:尝试新建一个项目,然后将原项目的资源(如scenes、scripts等文件夹)复制到新项目中,并重新配置项目设置。 5. **使用版本控制忽略**:如果项目使用版本控制(如Git),可能将project.godot添加到.gitignore中忽略了。 - 解决办法:检查.gitignore文件,确保没有忽略project.godot。如果忽略了,移除该规则并重新提交。 6. **Godot版本不匹配**:使用不同版本的Godot可能导致项目文件不被识别。 - 解决办法:使用与创建项目相同版本的Godot打开项目。如果不知道版本,可以尝试用最新版本的Godot打开,但可能会有兼容性问题。 步骤指南: 步骤1:确认项目目录结构 一个典型的Godot项目目录结构如下: ``` my_project/ ├── project.godot ├── icon.png ├── default_env.tres ├── scenes/ │ └── main.tscn └── scripts/ └── player.gd ``` 确保你在正确的位置查找project.godot。 步骤2:重新创建project.godot(如果丢失) 如果确定文件丢失且无法恢复,可以手动创建: - 在项目根目录下创建一个名为`project.godot`的文本文件。 - 写入基本配置(以下是一个示例): ``` [application] config/name="My Game" config/icon="res://icon.png" [rendering] environment/default_environment="res://default_env.tres" ``` - 注意:具体配置取决于项目,可以参照其他项目或Godot文档。 步骤3:通过Godot编辑器恢复 打开Godot编辑器,选择“导入”项目,选择项目目录,Godot可能会尝试重新生成配置文件。 步骤4:从备份恢复 如果有备份(如版本控制、快照等),恢复文件。 注意事项: - 在Godot中,项目设置可以通过编辑器中的“项目”->“项目设置”修改,这些设置会保存在project.godot中。 - 如果没有project.godotGodot无法识别该项目。 生成相关问题: §§相关问题§§ 1. 如何迁移Godot项目到另一台电脑? 2. Godot项目设置有哪些重要参数? 3. 如何解决Godot无法识别项目的问题? </think> 以下是解决 Godot 项目中缺失 `project.godot` 文件的完整方案: --- ### 🔍 问题原因分析 `project.godot` 是 Godot 项目的核心配置文件[^3],缺失会导致: 1. **项目无法识别**:Godot 编辑器无法加载项目资源 2. **设置丢失**:窗口尺寸、输入映射等配置失效[^3] 3. **资源路径错误**:所有 `res://` 路径引用失效 --- ### ✅ 解决方案(逐步操作) #### 方法 1:手动创建配置文件(推荐) 1. 在项目根目录创建新文件 `project.godot` 2. 写入基础配置: ```ini [application] config/name="你的项目名称" config/icon="res://icon.png" # 可选图标路径 [rendering] quality/driver/driver_name="GLES3" [input] # 示例:跳跃键设置 jump={ "deadzone": 0.5, "events": [ InputEventKey.new_with_scancode(KEY_SPACE) ] } ``` 3. 通过编辑器加载项目: ```bash godot --path /你的/项目/路径 ``` #### 方法 2:从备份恢复 1. 检查备份位置: - Windows: `%APPDATA%/Godot/projects/` - Linux: `~/.config/godot/projects/` - macOS: `~/Library/Application Support/Godot/projects/` 2. 查找 `.godot/project.json` 文件(编辑器自动备份) #### 方法 3:重建项目结构 1. 新建标准目录: ``` /你的项目/ ├── project.godot # 配置文件 ├── scenes/ # 场景目录 ├── scripts/ # 脚本目录 ├── assets/ # 资源目录 └── .godot/ # 编辑器缓存(自动生成) ``` 2. 关键参数参考: ```ini [display] window/size/width=1280 window/size/height=720 window/stretch/mode="2d" window/stretch/aspect="keep" [physics] 2d/default_gravity=980 ``` --- ### ⚠️ 关键注意事项 1. **路径规范**: - 所有路径使用 `res://` 前缀(如 `res://scenes/main.tscn`) - 避免使用绝对路径(`C:/` 或 `/home/`) 2. **版本兼容**: - Godot 3.x 使用 `.gd` 格式 - Godot 4.x 使用 `.godot` 格式(文本文件) 3. **动态获取配置**: 通过代码读取设置(避免硬编码)[^3]: ```gdscript # 获取窗口宽度 var screen_width = ProjectSettings.get_setting("display/window/size/width") print("屏幕宽度:", screen_width) ``` --- ### 🔧 故障排除 当文件存在但加载失败时: 1. 检查文件编码(必须为 UTF-8 无 BOM) 2. 验证基础语法: ```diff # 错误示例(缺少括号) - input jump={ + input jump={ ``` 3. 清除缓存: ```bash rm -rf .godot/ # Linux/macOS del /s/q .godot # Windows ``` --- ### 🌐 跨平台路径处理 | 系统 | 项目配置路径 | 备份位置 | |---------|----------------------------------|-----------------------------------| | Windows | `C:\YourProject\project.godot` | `%APPDATA%\Godot\projects\` | | Linux | `/home/user/project/project.godot`| `~/.config/godot/projects/` | | macOS | `/Users/user/project/project.godot` | `~/Library/Application Support/Godot/projects/` | --- ### 📚 相关引用 > Godot 的配置系统允许动态获取项目参数[^3],这是避免硬编码的最佳实践 > 跨平台开发时需注意路径规范[^1]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值