2024-02-03 周六

2024年2月3日14:11:09 


我还是应该想怎么实现这个法阵。 

首先。第一个 红名时间这个。  我想的就是通过process.
 这个下划线是干嘛的? _process





GameDataManager.magical_circle_seat[item]={"is_used":0,"magic_circle_id":0}

var seat=GameDataManager.magical_circle_seat

for item in seat:

var array=str(item).split("-")

var postion_x=int(array[0])

if postion_x==global_position.x:

GameDataManager.magical_circle_seat[item]={"is_used":0,"magic_circle_id":0}

break

给我解释一下,这个 array里面的适合什么,array[0]是什么

var postion_x=int(array[0]):array[0]是split方法分割出来的第一个元素,即原始键字符串中"-"前的部分,它代表法阵位置的x坐标。这行代码将这个字符串转换为整数,以便于后续的比较操作。






在Godot中,当你调用`queue_free()`方法时,当前节点会被标记为删除,但实际的删除操作会延迟到当前帧的




在Godot引擎中,下划线前缀通常用于表示一个特殊的函数或变量。特别是,当下划线用于函数名的开头时,它通常指的是Godot的内置函数,这些函数在特定的时间点或事件发生时自动被引擎调用。这些函数通常被称为“虚拟函数”或“回调函数”,它们允许开发者在节点的生命周期的关键时刻插入自定义的代码逻辑。

### `_ready()` 函数

- `_ready()` 是Godot最常用的内置函数之一。当节点及其所有子节点进入场景树时,`_ready()` 会被自动调用。这个函数是执行初始化代码的理想位置,比如获取节点引用、设置初始状态、连接信号等。因为在 `_ready()` 被调用时,可以保证节点以及它的子节点都已经被完全实例化,并且已经添加到场景树中。

### 下划线的用法

- 下划线不仅用于特定的回调函数,如 `_ready()`、`_process(delta)`、`_physics_process(delta)` 等,也可以用于自定义的私有函数或变量。在Godot社区中,一些开发者将下划线前缀用于私有成员的命名,以区分公共接口和内部实现的细节,尽管这不是强制性的规范。

### 关于 `init` 和 继承

- 在Godot中,`_init()` 函数类似于其他编程语言中的构造函数,用于初始化类的实例。如果你定义了一个自定义类(可以是一个继承自Godot内置类的脚本),你可以通过 `_init()` 方法来初始化该类的属性或执行其他构造逻辑。`_init()` 在对象创建的时候自动调用,比如通过 `new()` 方法实例化时。

- 继承是面向对象编程中的一个核心概念,Godot也支持继承。在Godot脚本中使用继承可以让你的类继承另一个类的属性和方法。这对于代码的复用和组织极为有用。在Godot脚本中,使用 `extends` 关键字来声明继承,例如 `extends Sprite` 表示你的脚本将继承自 `Sprite` 类。

### Godot 脚本与继承

- 在Godot的脚本系统中,继承的使用非常灵活。你不仅可以继承自Godot的内置节点类型(如 `Node`, `Spatial`, `Control` 等),也可以继承自其他GDScript脚本。这使得开发者能够建立自己的类层次结构,从通用行为到特定行为逐层细化。

通过使用这些特性,你可以编写出结构清晰、易于管理和扩展的游戏代码。

\\\\\\\



看 on_hurt函数。 

传过来的 damage 需要是Damage类型的。 


Damage.gd 


_notification
n.
通知;通知单,通知书;通告,布告


GameManager.gd 

add_monster_manager():
 

● Resource preload(path: String)

返回位于文件系统中 path 位置的 Resource。资源是在脚本解析期间加载的,即随脚本一同加载,preload() 实际上充当了对该资源的引用。请注意,该方法需要常量路径。如果要从动态/变量路径加载资源,请使用 load()。

注意:可以通过右键单击素材面板中的资源并选择“复制路径”,或者将文件从文件系统面板拖到脚本中来获得资源路径。

# 实例化场景。

var diamond = preload("res://diamond.tscn").instance()


int get_instance_id() const

返回该对象的唯一实例 ID。

这个 ID 可以保存在 EncodedObjectAsID 中,并且可以用 @GDScript.instance_from_id() 来检索对象实例。




● Array range(...) vararg
返回给定范围的数组。range() 的调用方法有三种:

range(n: int):从 0 开始,每次加 1,在到达 n 之前停止。不包含参数 n。

range(b: int, n: int):从 b 开始,每次加 1,在到达 n 之前停止。包含参数 b,不包含参数 n。

range(b: int, n: int, s: int):从 b 开始,每次加 s,在到达 n 之前停止。包含参数 b,不包含参数 n。参数  s 可以为负数,但不能为 0。如果 s 为 0,会输出一条错误。

range() 会先将所有参数转换为 int 再进行处理。

注意:如果不存在满足条件的值,则返回空数组(例如 range(2, 5, -1) 和 range(5, 5, 1))。

示例:

print(range(4))        # 输出 [0, 1, 2, 3]

print(range(2, 5))    # 输出 [2, 3, 4]

print(range(0, 6, 2))  # 输出 [0, 2, 4]

print(range(4, 1, -1)) # 输出 [4, 3, 2]

反向遍历 Array 请使用:

var array = [3, 6, 9]

for i in range(array.size(), 0, -1):

    print(array[i - 1])

输出:

9

6

3





游戏,刚开始就要很简单。  弃游率超级高。 通关率超级低。常态。 

玩那个《战场兄弟》我也是。 


音乐真好听。 耳机还不错,值了。



下一个。 看代码。 



fireBall.instance() 

子弹 对象池。 



哭哭哭哭 痛苦捏。 





先看字典 。 

Dictionary

注意:字典总是通过引用传递的。要获得一个可以独立于原始字典进行修改的字典副本,请使用 duplicate()。

不支持在迭代元素时擦除元素,会导致未定义行为。


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容