ここに挙げる不具合は、外から見ると 何も表示されない という同じ症状になりがちです。症状ではなく原因で切り分けます。まずは Godot の 出力 (Output) パネルを確認してください。プラグインもエンジンも、読めなかったパスやリソースを必ず名指しします。
拡張が読み込まれていません。GDExtension 形態では次の順に確認してください。
res://addons/spritestudio/spritestudio.gdextensionが存在するか。addonsフォルダはプロジェクトルートに置く必要があります(サブフォルダではありません)。- エディタが Godot 4.7 ビルドか。GDExtension は 4.7 から正式サポートで、異なる
godot-cppでビルドされたライブラリは読み込まれません。 addons/spritestudio/bin/<platform>/に実行中プラットフォーム向けのライブラリがあるか。出力パネルに、開こうとしたファイル名が出ます。
カスタムモジュール 形態には addons フォルダがありません。実行中のエディタバイナリにモジュールが組み込まれている場合にのみノードが存在します。
エクスポートには書き出す target と同じビルドが必要です。--export-debug は template_debug ライブラリを、--export-release は template_release を使います。editor ビルドしか無い場合でもエクスポート自体は「成功」し、ライブラリの実体が無い拡張が同梱されます。ビルドガイド を参照してください。
.ssab を割り当てただけでは再生されません。Animation ドロップダウンで名前を選ぶ(または set_animation() を呼ぶ)→ play()、もしくは Autoplay を有効にしてください。
パックに無い名前を指定すると、ノードは何も描画しません。出力パネルには、パックと要求した名前が出ます。
[SS] res://ssab_generated/Ringo/Ringo.ssab has no animation "wakl".
Animation ドロップダウンには実在する名前しか出ないので、これはスクリプトの set_animation() です。綴り間違いか、別のパックの名前を渡しているのが大半 — パック名も出しているのはそのためです。パックが実際に持っている一覧は get_animation_names() で取れます。
出力パネルの [SS] … is not a usable SSAB: it carries no parts or no animations. は、バイナリは読めたがパートまたはアニメーションを含んでいないという意味です。.sspj を再変換してください。ファイルが途中で切れているか、互換性のないコンバーターで生成された可能性が高いです。
テクスチャとサウンドは、.ssab を読み込んだディレクトリからの相対パスで解決されます。コンバーターの出力ディレクトリから .ssab だけを動かすと(隣にコピーされた .png を置き去りにすると)、サンプリング対象が無くなります。読み込みに失敗したパスは Godot がログに出します。
出力ディレクトリ(既定は res://ssab_generated)の構成を保つか、ディレクトリごと移動してください。
SpriteStudioPlayer2D はノードの原点を基準に、SpriteStudio のピクセル座標で描画します。原点から大きく離れた位置で作られたアニメーションはカメラの外に出ることがあります。ノードを動かさずに描画位置だけずらすには Offset を使ってください。
- テキストパーツと 9 スライスパーツは未実装です。 描画順の枠は保持されるため、そこだけ穴が開いた状態で再生されます。仕様と制約事項 を参照してください。
- そのフレームで非表示のパーツは、プラグインではなくアニメーション側で非表示になっています。SpriteStudio 上のタイムラインと、スクリプトから設定した表示オーバーライドが残っていないかを確認してください。
- インスタンスパーツの内側にあるパーツは、外から名前で指定できません(子アニメーションは別プレーヤとして動作します)。インスタンスパーツ自身は指定できます。
再生が停止・一時停止している間、あるいはフレームが進まないフレームでは描画が再構築されないため、オーバーライドを設定・解除しても見た目は変わりません。set_frame_no(get_frame_no()) で再描画を強制してください。
無限ループ(loop_count が -1 または 0)では仕様上発火しません。代わりに 1 周ごとに animation_looped が発火します。
シーク時は到達フレームのイベントだけが発火します。これは共通ランタイムの制約であり、プレイヤー側で回避できるものではありません。シークをまたいで成立させたい処理はフレーム番号で駆動してください。
independent=true のパーツが正しく評価されるのは 順再生時のみです。逆方向設定と ping-pong の復路には対応していません。(負の speed_scale は 3 つ目のケースではありません。逆再生になるのではなく停止します。)
上から順に確認してください。どれか 1 つでも該当すれば無音になります。
- 再生方向が逆向き。 逆再生では一切鳴りません(ping-pong の復路や負の
speed_scaleも含む)。 play_audioがオフ、またはaudio_backendが割り当てられていて、そのplay_audio()が自前のサウンド基盤に届いていない。バックエンドを割り当てると内蔵プレイヤーは常に抑制されます。- サウンドファイルが読み込めていない。 パスは Godot がログに出します。
.wav/.oggはAudioStreamとしてインポートされますが、Godot がインポートしない形式はnullになり黙って読み飛ばされます。 audio_volumeが 0、またはゲーム側のオーディオバスがミュートされている。
詳細は サウンド再生 を参照してください。
作業中のマシンに SpriteStudio がインストールされ、.sspj が関連付けられている必要があります。このボタンは OS のシェルにファイルを渡しているだけです。
.ssab から .sspj へのリンクは、プロジェクトルートの .ssplayer_sources.cfg に相対パスとして保存されています。.sspj を移動した場合は、FileSystem ドックで .ssab を右クリックして Reconvert を選ぶと新しい場所を尋ねられます。1 つ答えれば、同じディレクトリの他のファイルもまとめて再リンクされます。
.ssplayer_sources.cfg をバージョン管理に含めておくと、クローン直後からチーム全員でボタンが機能します。
ノードを選択し、SpriteStudio ボトムパネル(先頭から再生 / 現在位置から再生 / 停止、フレームスクラバ、ループと速度)を使ってください。エディタ上の再生は Autoplay ではなくこのパネルから駆動します。
- 「GDExtension libraries are not supported by this engine version.」 — 素の Web テンプレートは GDExtension を読み込めません。
dlink_enabled=yesでビルドしたエンジンテンプレートを用意してエクスポートプリセットで Extensions Support を有効にするか、どちらも不要なカスタムモジュール形態を使ってください。プロジェクトのエクスポート → Web を参照。 - ページは開くがアニメーションが出ない — ランタイムは WebAssembly SIMD 付きでビルドされており、SIMD 非対応のブラウザでは動作しません。配信要件として扱ってください。
- COOP/COEP ヘッダは不要です。Web ビルドは意図的にシングルスレッド (
nothread) のため、通常の静的サーバーで動作します。
- 仕様と制約事項 — 不具合ではなく仕様である制約の一覧。
- 共通の制限事項 — すべての公式プレイヤーに共通する制約。
- Issue を起票する — Godot のバージョン、ビルド形態(GDExtension / カスタムモジュール)、プラットフォーム、出力パネルの内容を添えてください。