Menu
CoddyTech

外部ファイル

CoddyのGDScriptジャーニー「オブジェクト指向プログラミング」セクションの一部。レッスン 1/65。

実際のプログラムは複数のファイルに分かれています。それぞれの.gdファイルはスクリプトで、あるスクリプトから別のスクリプトを使用できます。

スクリプトの先頭にclass_nameと記述すると、グローバル名を付けられます。すると、プロジェクト内のほかのすべてのスクリプトで、インポート行なしでその名前を直接使えます。

# greeter.gd
class_name Greeter
extends RefCounted

static func greet(player_name: String) -> String:
	return "Hello, " + player_name + "!"

static func を使うと、スクリプト名を通じて呼び出す関数を作れます。たとえば、Greeter.greet("Ada") のように呼び出します。extends RefCounted は、ノードではないスクリプトの基本となるクラスです。これについては次のレッスンで説明します。

# main.gd
extends Node

func _ready():
	print(Greeter.greet("Ada")) # Hello, Ada!

プログラムは引き続きmain.gdの_ready()から開始します。他のファイルは、main.gdが使用するものを定義するだけです。

Godotではファイル名にsnake_caseを使い、class_nameにはPascalCaseを使います。class_name Greeterはgreeter.gdに記述します。1つのファイルにつきクラスは1つにしましょう。

class_nameのないスクリプトは、preload()を使ってパスで読み込めます。

const Helpers = preload("res://helpers.gd")

func _ready():
	print(Helpers.shout("hi")) # HI!
challenge icon

チャレンジ

簡単

greeter.gd に静的関数 greet を記述してください。プレイヤー名を受け取り、Hello, NAME! を返します。名前が空の場合は、Hello, friend! を返します。

提供されたコードは、後に続く名前の数を読み取り、それぞれについて Greeter.greet() を出力します。名前が Ada と空行の場合、次のように出力します。

Hello, Ada!
Hello, friend!

コードは greeter.gd に記述します。main.gd には提供された入出力コードが含まれており、編集できません。

自分で試してみよう

extends Node

func _ready():
	# 用意された入出力コード:そのままにしてください
	var count := int(OS.read_string_from_stdin())
	for i in count:
		print(Greeter.greet(OS.read_string_from_stdin()))
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

オブジェクト指向プログラミングのすべてのレッスン

自分で練習してみよう: GDScriptオンラインコンパイラ