昔から人気の駄菓子「ビッグカツ」のフリー素材画像が公開されたので、無料・軽快な 2D / 3D 用のゲームエンジン Godot Engine 4 を使って、ビッグカツ画像を使ったブロック崩しを作成します。
「ビッグカツブロック崩し」作成の第37回では、ツイッター(現X)に現在のベストタイムなどのテキスト情報をツイート(ポスト)するボタンの実装例を紹介します。
エディタ上でのデバッグ実行の他に、フリーゲーム投稿サイト「 GodotPlayer 」にアップロードした WebGL 版でも動作を確認します。
![](https://compota-soft.work/wp1/wp-content/uploads/2024/09/GodotEngine4.3-公式サイトの一部-20240911.png)
※ GodotEngine 4.3 を使用しています。.NET 版ではありません。
※スクリプトは自己責任でご使用ください。
前回の記事
前回は、BB Code の URL タグを使ってハイパーリンクをクリックした際にサイトを開く実装例を紹介しました。
ツイートボタンの作成
ツイート用の Button クラスのノードを画面に配置します。
以前に作成したボタンと同じデザインなので、そのボタンのノードを右クリックして表示されるメニュー「複製」からボタンを複製します。
ボタンの作成や複製については、以下の記事を参照してください。
![Godot4 ビッグカツブロック崩し ツイートボタンを複製して作成1](https://compota-soft.work/wp1/wp-content/uploads/2025/01/Godot4-ビッグカツブロック崩し-ツイートボタンを複製して作成1.png)
複製したボタンの位置やサイズを調整して、インスペクタードックの Text プロパティでボタンに表示するテキストを設定します。
![Godot4 ビッグカツブロック崩し ツイートボタンを複製して作成2](https://compota-soft.work/wp1/wp-content/uploads/2025/01/Godot4-ビッグカツブロック崩し-ツイートボタンを複製して作成2.png)
ノードドックでは、ボタンが押されたときに呼び出される関数(受信側メソッド)を設定します。
複製元で設定してあった受信側メソッドが button_on シグナルに接続されているので、その受信側メソッドを右クリックして表示されるメニュー「切断」で、複製元の設定を消去します。
![Godot4 ビッグカツブロック崩し ツイートボタンを複製して作成3](https://compota-soft.work/wp1/wp-content/uploads/2025/01/Godot4-ビッグカツブロック崩し-ツイートボタンを複製して作成3.png)
そして、新たにツイートボタンが押されたときに呼び出される関数(受信側メソッド)を作成・接続するために、ノードドックの button_on シグナルをダブルクリックします。
「メソッドにシグナルを接続」ダイアログが表示されるので、スクリプトが割り当てられている TitleScene ルートノードが選択されていることを確認して「接続」ボタンを押します。
※受信側メソッド項目のテキストに記述されている名前の受信側メソッドが作成・接続されます。
![Godot4 ビッグカツブロック崩し ツイートボタンを複製して作成4](https://compota-soft.work/wp1/wp-content/uploads/2025/01/Godot4-ビッグカツブロック崩し-ツイートボタンを複製して作成4-1024x631.png)
ツイートボタンの button_up シグナルに接続させた受信側メソッド _on_button_best_time_tweet_button_up が、TitleScene ルートノードに割り当てられている title_scene.gd スクリプトに追加されました。
ボタンのシグナルの設定については、以下の記事も参照してください。
スクリプトの追加
ボタンと受信側メソッドを作成した後は、スクリプトで、ツイートボタンが押された際の動作や、表示・非表示の設定を行います。
以下は、ツイートボタンが押された際に呼び出される受信側メソッドです。
shell_open 関数で指定した URL のサイトを開くだけです。
ツイートを行うための text 情報を付加した URL を設定しています。
ツイートの URL の始まり「”https://x.com/intent/post?text=”」は、このページの上側にも表示されている X のボタンを押して表示される URL から text 以降の文字列を取り除いたものを使用しました。
## ButtonBestTimeTweet のボタンが離された際のシグナル (button_up) の受信側メソッドです。
## ベストタイムをツイートする画面を開きます。
func _on_button_best_time_tweet_button_up():
# 小数の値を、小数第一位までのテキストに変換します。
var time = str("%.1f" % $"/root/SaveDataGlobal".best_time)
# ベストタイムを含めたツイート文を作成します。
# %0A は改行、%23 は # を表す URL エンコーディングです。
var tweet_message:String = "%23BigBreakOut BestTime: " + time + " sec.%0Aビッグなブロック崩し Play-> https://godotplayer.com/games/big_break_out"
# 指定した文字列をツイートするための URL を開きます。
OS.shell_open("https://x.com/intent/post?text=" + tweet_message)
return
最初に呼び出される _ready イベント関数では、ボタンの表示・非表示や、ボタンに表示するテキストを設定しています。
一度もクリアしていないなどベストタイムが無効な状態では、ツイートボタンやリセットボタンは表示しないようにしています。
ベストタイムが有効な場合は、小数第一位までの形式でボタンのテキストにタイムも表記します。
※詳細はスクリプト内のコメントを参照してください。
# Called when the node enters the scene tree for the first time.
func _ready():
# 設定を確認します。
if next_scene == null:
printerr("TitleScene ノードの next_scene プロパティに切り替え先のシーン (tscn) を設定してください。")
# セーブデータから読み込んだ音量をスライダーに設定します。
$HSliderSoundVolume.value = $"/root/SaveDataGlobal".sound_volume
# クレジット画面のルートとなっている CreditScreen (ColorRect) ノードを非表示にします。
$CreditScreen.hide()
# ベストタイムが有効ならば、ツイートボタンとリセットボタンを表示します。
if $"/root/SaveDataGlobal".best_time > 0:
# ベストタイムが有効なので、ボタンを表示します。
$ButtonBestTimeReset.show()
$ButtonBestTimeTweet.show()
# ツイートボタンにベストタイム 00.0 (小数第一位までの)表記を加えます。
var time = str("%.1f" % $"/root/SaveDataGlobal".best_time)
# ツイートボタンのテキストに、ベストタイムも加えます。
$ButtonBestTimeTweet.text = "BestTime (%s) Tweet" % time
else:
# ベストタイムが無効なので、ボタンを非表示にします。
$ButtonBestTimeReset.hide()
$ButtonBestTimeTweet.hide()
return
ベストタイムのロード・セーブについては以下の記事を参照してください。
テスト
F5/F6 キーなどで、ツイートボタンを配置したタイトルのシーンをエディタでデバッグ実行して確認した結果、ボタンを押すと、ウェブブラウザが起動して、文章が最初から設定されたツイートするページが開かれました。
フリーゲーム投稿サイト「 GodotPlayer 」にアップロードした WebGL 版でも同様に動作することを確認しました。
![Godot4 OS.shell_open で文章を設定してツイートを行うページを開くことができました。](https://compota-soft.work/wp1/wp-content/uploads/2025/01/Godot4-OS.shell_open-で文章を設定してツイートを行うページを開くことができました。.gif)
URL エンコーディングの %23 は # に、 %0A は改行としてきちんと文章に反映されています。
![Godot4 OS.shell_open で文章を設定してツイートを行うページを開くことができました。SS1](https://compota-soft.work/wp1/wp-content/uploads/2025/01/Godot4-OS.shell_open-で文章を設定してツイートを行うページを開くことができました。SS1.png)
![Godot4 OS.shell_open で文章を設定してツイートを行うページを開くことができました。SS2](https://compota-soft.work/wp1/wp-content/uploads/2025/01/Godot4-OS.shell_open-で文章を設定してツイートを行うページを開くことができました。SS2.png)
まとめ
「ビッグカツブロック崩し」作成の第37回では、ツイッター(現X)に現在のベストタイムなどのテキスト情報をツイート(ポスト)するボタンの実装例を紹介しました。
エディタ上でのデバッグ実行の他に、フリーゲーム投稿サイト「 GodotPlayer 」にアップロードした WebGL 版でも動作を確認しました。
以上で、「ビッグカツブロック崩し」作成シリーズは完了です。
読者の方のゲーム作りのヒントになれば幸いです。
#このシリーズがこんなに長くなるとは思っていませんでした。読んでいただきありがとうございます!
参照サイト Thank You!
- Godot Engine – Free and open source 2D and 3D game engine
- フリーゲーム投稿サイト GodotPlayer
- Xユーザーのビッグカツといか姿フライのすぐる【公式】さん: 「使いどころは思いつきませんが、フリー素材としてどうぞご自由にお使いくださいませ! https://t.co/8F9q3hS02b」 / X
- しょかきうたげ【フリーフォント版あり】 – ぼんのう堂 – BOOTH
- Button — Godot Engine (stable) documentation in English
- シグナルの使用 — Godot Engine (4.x)の日本語のドキュメント
- OS — Godot Engine (4.x)の日本語のドキュメント #shell_open
記事一覧 → Compota-Soft-Press
コメント