我是剛從統一開始的 Godot 新手,我不知道如何復制物件/節點。我試過重復功能沒有效果。我最近的嘗試嘗試創建與父節點具有相同屬性的子節點。我似乎無法到達任何地方,將不勝感激。這是我嘗試創建子節點的代碼:
Node copynode = new Node();
// Called when the node enters the scene tree for the first time.
public override void _Ready()
{
copynode = this;
for (int i = 0; i < 5; i )
{
AddChild(copynode);
}
}
也有人可以告訴我場景中的物件/節點/專案實際上被稱為什么以及如何參考它?它是 Node 還是 Gamedot.Object 或其他什么?以及如何獲取和設定它的屬性?我只是真的習慣了團結,無法弄清楚這些東西。我找到的唯一教程是 Godot 語言,而且我已經知道 c#,所以我更愿意用它來編程。
uj5u.com熱心網友回復:
節點是參考
我相信您希望Node充當值型別,但實際上它是一個參考。讓我們來看看會發生什么:
在這里,您宣告一個型別的變數Node,并將其初始化為一個新的Node:
Node copynode = new Node();
Node然后在這里你用正在執行這個腳本的覆寫它:
copynode = this;
然后你嘗試添加Node自己的 as child 五次:
AddChild(copynode);
當然,這不起作用。你這樣做五次。
讓我們慶幸這不起作用。因為如果是這樣,你就有了一個Node它自己復制了五個副本,每個副本也復制了五個自己,你可以想象這是怎么回事。這就是為什么我不會給你一些代碼來做到這一點。
如您所知,有一個重復的方法。我懷疑您希望它將副本添加到場景樹中。然而,它并沒有這樣做。相反,它會回傳副本,您必須添加它(或用它做其他事情)。
你的問題
也有人可以告訴我場景中的物件/節點/專案實際上被稱為什么以及如何參考它?
我不確定你是什么意思。但是,如果有幫助,this將參考正在執行腳本的物件。
它是 Node 還是 Gamedot.Object 或其他什么?
該類Godot.Node繼承自Godot.Object. 如果您將腳本附加到腳本Node的類,則Node必須Godot.Node從Godot.Node. 我希望這會有所幫助。
以及如何獲取和設定它的屬性?
您可以像任何 C# 屬性一樣獲取和設定它們。雖然您也應該能夠使用GetandSet方法,但那是為動態代碼設計的。
如果您正在尋找的是如何使屬性在檢查器面板中可用,您可以通過添加[Export]屬性來實作。例如:
[Export]
public float Speed;
And it should appear in the inspector panel when the object that has the script is selected.
我找到的唯一教程是 Godot 語言,而且我已經知道 c#,所以我更愿意用它來編程。
大多數教程都在 GDScript 中,因為:
- 有兩個 Godot 構建。一個帶有 C#,一個沒有 C#。但兩者都可以使用 GDScript。因此,無論您使用哪種構建,GDScript 都很有用。
- 從 GDScript 翻譯到 C# 并不困難。它主要是命名約定(以及一些邊緣情況,您在開始時可能不會遇到)。請參閱
- 基本節點類是不可見的(灰色),因此您看不到它們是否被添加。您可以在運行時在場景樹中從本地切換到遠程選項卡,只看到添加了一個不可見節點。
- 如果您將代碼更改為
AddChild(copynode).Duplicate();您可以看到它添加了所有 5 個不可見節點。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/429020.html
