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()。
不支持在迭代元素時擦除元素,會導致未定義行為。