GodotEngine4 C#からGDScriptへの変換パターン 2/3

無料で軽快な 3D/2D のゲームエンジン「Godot Engine 4」で作成したプログラムC# から GDScript へ変換した際の具体例を変換のパターンとして紹介します。
2回目は、クラス、変数、関数の定義や、変数をエディタ上で編集可能にするキーワードを紹介します。
紹介するプログラムに出てきた範囲での紹介です。他については「GDScript reference — Godot Engine (4.x)の日本語のドキュメント」をご覧ください。

Godot Engine Download Latest ボタンを押します

※引用の英文の後の日本語は Google 翻訳の結果を挿入したものです。

C# → GDScript 変換パターン

要素ごとに分けて、プログラムを C# から GDScript への変換パターンを説明します。
簡素な変換パターン一覧表もあるので、そちらも参照してください。

クラス宣言

GDScript のクラス宣言は、クラス名と継承元を class_name, extends キーワードを使って設定します。

public partial class player : Area2D
{
}
class_name player
extends Area2D

class_name で定義した独自のクラスは、他の gd ファイル内で preload 関数で読み込むことで利用できます。
extends は、gd ファイルを作成する際に指定する基底のノードのクラスが自動的に記述されます。

GodotEngine4 ノードにスクリプトをアタッチする際のノードのクラスが継承元として extends キーワードの後に記述されます.
class_nameDefines the script as a globally accessible class with the specified name.
スクリプトを、指定された名前を持つグローバルにアクセス可能なクラスとして定義します。
extendsDefines what class to extend with the current class.
現在のクラスでどのクラスを拡張するかを定義します。
GDScript reference — Godot Engine (stable) documentation in English

変数定義

GDScript の変数定義は、 var の後に変数名を指定します。 ; も必要ありません。

public Vector2 ScreenSize; // Size of the game window.
var ScreenSize  # Size of the game window.

また、以下のように様々な型の初期化も行えます。
参照:GDScript reference — Godot Engine (4.x)の日本語のドキュメント

# Member variables.
var a = 5
var s = "Hello"
var arr = [1, 2, 3]
var dict = {"key": "value", 2: 3}
var other_dict = {key = "value", other_key = 2}
var typed_var: int # オプションの静的型付け ( int 型 )
var inferred_type := "String"

変数をエディタ上で編集可能にするキーワード

C# のメンバ変数をエディタの Inspector ドックで編集可能にするためには [Export] Attribute (属性) を変数定義のアクセス修飾子の前につけます。
参照:チュートリアル: カスタム属性の定義と読み取り – C# | Microsoft Learn

	[Export]
	public int Speed { get; set; } = 400; // How fast the player will move (pixels/sec).

GDScript でメンバ変数をエディタの Inscpector ドックで編集可能にするためには @export Annotation (アノテーション) を var の前につけます。
参照:GDScript exported properties — Godot Engine (4.x)の日本語のドキュメント

@export var Speed = 400

アノテーションは他にもたくさんあります。それらについては「GDScript reference — Godot Engine (4.x)の日本語のドキュメント」などを参照してください。

関数の定義

GDScript では func キーワードで関数を定義します。
関数の定義の部分はスコープを1つ深くするために Python 同様に Tab を 1 つ挿入してから記述します。
() の中に仮引数をカンマ区切りで指定することで、呼び出し元から引数を受け取ることもできます。

C# ではイベント関数は override キーワードを指定しますが、 GDScript では不要です。

	// イベント関数
	// Called when the node enters the scene tree for the first time.
	public override void _Ready()
	{
		ScreenSize = GetViewportRect().Size;
	}

	// 引数つきのイベント関数
	// Called every frame. 'delta' is the elapsed time since the previous frame.
	public override void _Process(double delta)
	{
		// Mob が追跡する位置を更新。
		TargetPosition = Position;
	}


	// 独自の関数
	public void OnGameover()
	{
		Modulate = new Color(0.0f, 0.26f, 0.27f, 1f);
	}
# イベント関数
# Called when the node enters the scene tree for the first time.
func _ready():
	ScreenSize = get_viewport_rect().size

# 引数付きのイベント関数
# Called every frame. 'delta' is the elapsed time since the previous frame.
func _process(_delta):
	TargetPosition = position;


# 独自の関数
func OnGameover():
	modulate = Color(0.0, 0.26, 0.27, 1);

return キーワードで戻り値を返すこともできます。
参照:GDScript reference — Godot Engine (4.x)の日本語のドキュメント

今回はここまで

無料で軽快な 3D/2D のゲームエンジン「Godot Engine 4」で作成したプログラムC# から GDScript へ変換した際の具体例を変換のパターンとして紹介しました。
2回目は、クラス、変数、関数の定義や、変数をエディタ上で編集可能にするキーワードを紹介しました。

参照サイト Thank You!

記事一覧 → Compota-Soft-Press

コメント

Ads Blocker Image Powered by Code Help Pro

お願い - Ads Blocker Detected

このサイトは広告を掲載して運営しています。

ポップアップを閉じて閲覧できますが、よろしければ

このサイト内の広告を非表示にする拡張機能をオフにしていただけませんか?

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

We have detected that you are using extensions to block ads. Please support us by disabling these ads blocker.

タイトルとURLをコピーしました