Godot4プロジェクト初期状態で文字を描画できるフォールバックフォントの用例

無料・軽快な 2D / 3D 用のゲームエンジン Godot Engine 4 の、プロジェクトにフォントファイルを1つも追加していない状態でも利用できる FallBack フォントについて紹介します。
また、文字列(テキスト)をスクリプトだけで描画できる draw_string 関数の用例使用結果についても紹介します。

※ GodotEngine 4.3 を使用しています。.NET 版ではありません。
※スクリプトは自己責任でご使用ください。

_draw イベント関数についての関連記事

文字を描画する関数を記述する CanvasItem 派生クラスで利用できる _draw イベント関数については以下の記事も参照してください。

FallBack フォントとは

GodotEngine では、さまざまなフォントをプロジェクトに追加して使用できます。
しかし、フォントを追加しないデフォルトの状態テキスト(文字列)を描画したい場合のために FallBack フォントも用意されています。

Font fallback_font

  • void set_fallback_font ( Font value )
  • Font get_fallback_font ( )

The fallback font of every Control node and Theme resource. Used when no other value is available to the control.

すべてのコントロール ノードとテーマ リソースのフォールバック フォント。コントロールで使用できる他の値がない場合に使用されます。

See also Theme.default_font.

ThemeDB — Godot Engine (4.1) documentation in English #fallback-font と Google 翻訳

フォールバックとは、ソフトウェアの場合、不測の事態の際に不完全でも処理を継続させるために、予備などを用いることを指します。

日本語では「縮退運転・縮退運用」と呼びます。

機器やソフトウェア、システムに異常が生じた際、性能や機能を制限したり、異常箇所を切り離したり、予備の機材などを使用するなどして、不完全ながらも処理や稼動を継続させることを意味します。

フォールバック – 三和コムテック|IBM iポータル

似ているリソースとして、Font.default_font もありますが、こちらは無効な場合もありhas_default_font 関数でその有効性を確認できます。

Font default_font

  • void set_default_font ( Font value )
  • Font get_default_font ( )

The default font of this theme resource. Used as the default value when trying to fetch a font resource that doesn’t exist in this theme or is in invalid state. If the default font is also missing or invalid, the engine fallback value is used

このテーマリソースのデフォルトのフォント。このテーマに存在しない、または無効な状態にあるフォント リソースを取得しようとするときに、デフォルト値として使用されます。デフォルトのフォントも見つからないか無効な場合は、エンジンのフォールバック値が使用されます。

(see ThemeDB.fallback_font).

Use has_default_font to check if this value is valid.

Theme — Godot Engine (4.1) documentation in English #default-font と Google 翻訳

FallBack フォントを使用してテキストを描画する例

以下は、FallBack フォントと draw_string 関数を用いて、3つのテキストを描画した用例です。
※ draw_string 関数は _draw イベント関数で使用します。

新規シーンのトップノード Node2D にスクリプトを割り当てて、以下の処理を追加します。

# 再描画したい場合は queue_redraw 関数を呼び出してください。
func _draw():
	draw_string(ThemeDB.fallback_font, Vector2(120, 60), "Hello, World!", HORIZONTAL_ALIGNMENT_CENTER, -1, 16, Color.GREEN)
	draw_string(ThemeDB.fallback_font, Vector2(120, 240), "Hello, World!", HORIZONTAL_ALIGNMENT_CENTER, -1, 64, Color.GREEN)
	draw_string(ThemeDB.fallback_font, Vector2(120, 300), "日本語も使えます!", HORIZONTAL_ALIGNMENT_CENTER, -1, 32, Color.GREEN)

CanvasItem.draw_string 関数の引数はたくさんあるので、詳細については以下の公式の説明を参照してください。
用例では、色を指定する部分までの引数を指定しています。

void draw_string(font: Font, pos: Vector2, text: String, alignment: HorizontalAlignment = 0, width: float = -1, font_size: int = 16, modulate: Color = Color(1, 1, 1, 1), justification_flags: BitField[JustificationFlag] = 3, direction: Direction = 0, orientation: Orientation = 0) const 🔗

Draws text using the specified font at the pos (bottom-left corner using the baseline of the font). The text will have its color multiplied by modulate. If width is greater than or equal to 0, the text will be clipped if it exceeds the specified width.

指定されたフォントを使用してテキストを位置(フォントのベースラインを使用して左下隅)に描画します。テキストの色は modulate で乗算されます。 width が 0 以上の場合、テキストが指定された幅を超えると切り取られます。

Example using the default project font:GDScriptC#

# If using this method in a script that redraws constantly, move the
# `default_font` declaration to a member variable assigned in `_ready()`
# so the Control is only created once.
var default_font = ThemeDB.fallback_font
var default_font_size = ThemeDB.fallback_font_size
draw_string(default_font, Vector2(64, 64), "Hello world", HORIZONTAL_ALIGNMENT_LEFT, -1, default_font_size)

See also Font.draw_string.

CanvasItem — Godot Engine (stable) documentation in English #draw-string と Google 翻訳

テスト

F5 / F6 キーなどで draw_string文字列を描画するシーンを実行します。

デフォルトで使える FallBack フォントは、半角文字はもちろんですが、日本語も使えて、フォントサイズを 64 まで大きくしてもきれいに描画されます。
Godot くんのアイコン画像は、スプライトで描画しています。

Godot4 デフォルトで使える FallBackフォントを draw_string で使用した例

まとめ

今回は、無料・軽快な 2D / 3D 用のゲームエンジン Godot Engine 4 の、プロジェクトにフォントファイルを1つも追加していない状態でも利用できる FallBack フォントについて紹介しました。
また、文字列(テキスト)をスクリプトだけで描画できる draw_string 関数の用例使用結果についても紹介しました。

参照サイト 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をコピーしました