GodotEngine C# ⇔ GDScript 変換早見表

無料で軽快な 3D/2D のゲームエンジン「Godot Engine 4」の C# スクリプトと GDScript の変換の具体例の一覧です。
必要に応じて増やす予定です。

GodotEngine 4.2 (2024/01/17 現在) の時点では、まだ C# スクリプトは HTML5 エクスポートに対応していません。
HTML5 エクスポートする場合は GDScript で作成するか、 Godot Engine 3 を利用する方法があります。

Projects written in C# using Godot 4 currently cannot be exported to the web. To use C# on web platforms, use Godot 3 instead.

Godot 4 を使用して C# で作成されたプロジェクトは現在、Web にエクスポートできません。 Web プラットフォームで C# を使用するには、代わりに Godot 3 を使用してください。

Webのエクスポート — Godot Engine (4.x)の日本語のドキュメント と Google 翻訳

変換の具体例の一覧

命名規則

ファイル名snake_case ※1
クラス名PascalCase
ノード名PascalCase
関数snake_case
変数snake_case
シグナルsnake_case
(xxx_changed など過去形)
定数CONSTANT_CASE
列挙型PascalCase
列挙子CONSTANT_CASE
GDScript の命名規則
参照:GDScriptスタイルガイド — Godot Engine (4.x)の日本語のドキュメント

※1:GD スクリプトファイルは、シーン保存前だとノード名(CamelCase)のファイル名が設定されていますが、snake_case に直すことが公式サイトで勧められています。
また、クラス名については CamelCase にするため、作成した GD スクリプトの extend 行の前に class_name ClassName と追加しましょう。この場合のファイル名は class_name.gd が推奨されています。
参照:GDScriptスタイルガイド — Godot Engine (4.x)の日本語のドキュメント

class_name ClassName
extend Node

GodotEngine4 C#からGDScriptへの変換パターン 1/3 | Compota-Soft-Press

コメント

// コメント

/* 複数行の
 * コメント
 */
# コメント

# 複数行の
# コメント

GodotEngine4 C#からGDScriptへの変換パターン 1/3 | Compota-Soft-Press

スコープ

public partial class player : Area2D
{
	public Vector2 ScreenSize; // Size of the game window.

	public override void _Ready()
	{
		ScreenSize = GetViewportRect().Size;
	}
}
class_name player
extends Area2D

var screen_size
func _ready()
	screen_size = get_viewport_rect().size

GodotEngine4 C#からGDScriptへの変換パターン 1/3 | Compota-Soft-Press

継続行

var angle_degrees = 135
var quadrant = (
        "northeast" if angle_degrees <= 90
        else "southeast" if angle_degrees <= 180
        else "southwest" if angle_degrees <= 270
        else "northwest"
)

var position = Vector2(250, 350)
if (
        position.x > 200 and position.x < 400
        and position.y > 300 and position.y < 400
):
    pass

GodotEngine4 C#からGDScriptへの変換パターン 1/3 | Compota-Soft-Press

クラス宣言

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

GodotEngine4 C#からGDScriptへの変換パターン 2/3 | Compota-Soft-Press

変数定義

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

GodotEngine4 C#からGDScriptへの変換パターン 2/3 | Compota-Soft-Press

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

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

GodotEngine4 C#からGDScriptへの変換パターン 2/3 | Compota-Soft-Press

関数の定義

	// イベント関数
	// 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);

GodotEngine4 C#からGDScriptへの変換パターン 2/3 | Compota-Soft-Press

using ディレクティブ

using Godot;
using System;
# GDScript では不要です。

GodotEngine4 C#からGDScriptへの変換パターン 3/3 | Compota-Soft-Press

signal 属性, signal 型

[Signal]
public delegate void HitEventHandler();
signal Hit

GodotEngine4 C#からGDScriptへの変換パターン 3/3 | Compota-Soft-Press

ノードの取得

GetNode("CollisionShape2D").Disabled = false;
$CollisionShape2D.disabled = false

GodotEngine4 C#からGDScriptへの変換パターン 3/3 | Compota-Soft-Press

列挙型

	public enum GamePhase
	{
		Title,	// タイトル画面
		Play,	// プレイ中
		Gameover,	// ゲームオーバー
		Clear,	// クリア
	};
enum GamePhase
{
	Title,	# タイトル画面
	Play,	# プレイ中
	Gameover,	# ゲームオーバー
	Clear,	# クリア
}

GodotEngine4 C#からGDScriptへの変換パターン 3/3 | Compota-Soft-Press

static 変数 (クラス変数)

static public GamePhase CurPhase = GamePhase.Title;
static var CurPhase = GamePhase.Title
		if (main.CurPhase != main.GamePhase.Play)
		{
			return;
		}
	if main.CurPhase != main.GamePhase.Play:
		return

GodotEngine4 C#からGDScriptへの変換パターン 3/3 | Compota-Soft-Press

print 関数

GD.Print("test");
print("test")

GodotEngine4 C#からGDScriptへの変換パターン 3/3 | Compota-Soft-Press

if 文

// 例 1 enum の値の比較
		if (CurPhase == GamePhase.Clear)
		{
			ZombieEraseTime -= delta;
		}
// 例 2 キャストを含む比較
			if (((int)(NoDamageTime / NoDamageBlinkInterval)) % 2 == 0)
			{
				GetNode<AnimatedSprite2D>("AnimatedSprite2D").Modulate = new Color(1, 0, 0, 1);
			}
			else
			{
				GetNode<AnimatedSprite2D>("AnimatedSprite2D").Modulate = new Color(1, 1, 1, 1);
			}
# 例 1 enum の値の比較
	if CurPhase == GamePhase.Clear:
		ZombieEraseTime -= _delta;
# 例 2 キャストを含む比較
		if int(NoDamageTime / NoDamageBlinkInterval) % 2 == 0:
			$AnimatedSprite2D.modulate = Color(1, 0, 0, 1);
		else:
			$AnimatedSprite2D.modulate = Color(1, 1, 1, 1);

GodotEngine4 C#からGDScriptへの変換パターン 3/3 | Compota-Soft-Press

for 文

for (int i = 0; i < 3)
{
	// i = 0, 1, 2 の 3 回のループ処理です。
}
for i in range(3):
	# i = 0, 1, 2 の 3 回のループ処理です。

GodotEngine4 C#からGDScriptへの変換パターン 3/3 | Compota-Soft-Press

関連記事

記事一覧 → 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をコピーしました