0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

GDevelop備忘録①:編集画面のレンダリングのエラー・プレビューができないエラーの対処方法【JSONのcontent属性の欠如】

0
Last updated at Posted at 2025-10-02

この情報は2025年10月02日現在です。アップデート等により改善されている可能性があります。

こんにちは。
日々G Developでできることを研究し、こどもたちに提供している、登別のプログラミング教室「のぼプロ」です。
今回は、実際に生徒から不具合報告があったので、その内容と対処法についてまとめました。
結構雑記みたいな形になりましたが、参考になりますと幸いです。

環境

  • OS:Windows 11
  • GDevelopバージョン:5.5.242(2025年10月2日現在最新)
  • 不具合再現用のプロジェクトはGoogleドライブで公開中です

※ 再現したプロジェクトを使用しています。実際のプロジェクトとは異なります。

想定される表示画面

本来は以下のような画面が表示されており、しっかりとUIが出ている感じですね。
image.png

不具合の内容

  • シーンのプレビューを押すと、ずっと回転して動かない
  • 共有ボタンを押してもエラーでエクスポートできない
  • ボタンの設定を開いて編集後に閉じることができない
  • 編集画面では以下のようなエラー文が表示される

image.png

原因

当初は入っている画像や音楽などのリソース周りの問題かと思いましたが、全部開いても問題なかったので、プロジェクトデータを管理しているJSONの設定に目を向けてみました。

といっても、このような原因は複数あると考えられます。
原因を特定する際は、デバッグツールを使うと良いでしょう。

レンダリングのエラーの解析

デバッグツールは、エディター上で「Ctrl + Shift + I」を同時押しすると開くことができます。

image.png

赤いログがレンダリングのエラーを示しています。

image.png

少し大きめに確認してみると、

  • 1行目は「文字列ではないオブジェクトがsplitという関数を呼ぼうとしているよというエラー」
  • 2行目は「ColorTransformerでデータに対してsplitを行おうとした場所」
  • 3行目は「RenderingTextInputObjectInstanceからColorTransformerを呼び出した場所」

という風に書かれています。
大まかに言えば、テキスト入力オブジェクトを正しく読み取ることができなかったというエラーです。

3行目のエラーの白文字リンクを押して開いてみると、以下のコードが出てきます。
image.png

これはtextColorに設定された値を入れて、finalTextColorで変換された値にするといったコードになっています。
通常GDevelopはJSONファイルで保存されており、色情報はRGBの"255;255;255"という形式で保存されています。

もし上記のようなエラーが発生するとしたら、取得しようとした情報が正しくない、もしくは「そもそも」なくてundefinedになっている可能性があります。

プレビューのエラー解析

プレビューしたときに開かないエラーについても解析します。

image.png

少し大きめに確認してみると、

  • 1行目は「数値?ではないオブジェクトがtoStringという関数を呼ぼうとしているよというエラー」
  • 2行目は「bitmapTextObjectでデータに対してtoStringを行おうとした場所」

という風に書かれており、レンダリングのエラーと少し似た感じになっています。
このようにしてみると、プロジェクトのデータの欠損の可能性が考えられるようになります。
ちなみにビットマップテキストは、ボタンの属性の一部として使用されています。

JSONファイルのオブジェクトの設定確認

一旦GDevelopを終了して、プロジェクトのjsonファイル(オフラインで保存している人はプロジェクトフォルダー内にあります)をVSCodeなどで開きます。
image.png

image.png

開いたら、オブジェクトの状態を確認するため、"objects"と書かれた行まで移動します。
image.png

ここで問題点が1つあります。それはテキスト入力オブジェクトの設定が一切入っていません。
スクリーンショット 2025-10-02 230318.png
content属性は、オブジェクトの設定を入れておく場所で、テキスト色や枠線、塗りつぶし色などの設定が入っています。オブジェクトを追加する際も、基本的にデフォルト値の設定が入っています。
しかし、プロジェクトが古いせいか、content属性に何も入っていないままになっています。

その後のビットマップテキストのcontent属性も入っていませんでした。
image.png

このようにして、GDevelopではオブジェクトのcontent属性に何も入っていないと壊れてしまうことを覚えておきましょう。

対処法

基本的にはcontent属性にデフォルト値を入れて、とりあえずロードできる状態にするのがベターだと考えています。デフォルト値の内容をコピーして貼り付けましょう。

まずは、テキスト入力オブジェクトのデフォルト値を見てみましょう。

テキスト入力オブジェクトのcontent属性のデフォルト値
"content": {
	"initialValue": "",
	"placeholder": "Touch to start typing",
	"fontResourceName": "",
	"fontSize": 20,
	"inputType": "text",
	"textColor": "0;0;0",
	"fillColor": "255;255;255",
	"fillOpacity": 255,
	"borderColor": "0;0;0",
	"borderOpacity": 255,
	"borderWidth": 1,
	"readOnly": false,
	"disabled": false,
	"spellCheck": false,
	"paddingX": 2,
	"paddingY": 1,
	"textAlign": "left",
	"maxLength": 0
}

これを先ほどのJSONのcontent属性内に貼り付けます。

image.png

また、ビットマップテキストのデフォルト値は以下の通りです。

ビットマップテキストのcontent属性のデフォルト値
"content": {
    "text": "Text",
    "opacity": 255,
    "scale": 1,
    "fontSize": 20,
    "tint": "255;255;255",
    "bitmapFontResourceName": "",
    "textureAtlasResourceName": "",
    "align": "center",
    "verticalTextAlignment": "center"
}

これを先ほどのJSONのcontent属性内に貼り付けて、もう一度読み込んでみましょう。

image.png

しっかり読み込まれましたね!
そしてプレビューも問題なく行うことができます。

image.png

image.png

対処法のまとめ

  • エディターの様子がおかしいときは「Ctrl + Shift + I」を同時に押して、デバッグツールを開く
  • コンソールのログを確認して、原因を探る
  • プロジェクトファイル(JSON)を覗いて、オブジェクトの特に「content属性が空であるか」を確認する
  • 致命的に情報が足りない場合は、デフォルト値(オブジェクトを追加したときの最初の値)を入れておく

最後に

基本的に、データの有無が存在するのであれば、本来はシステムとしてエラーにならないように対処するのが大事だと思います。今後のアップデートでcontent属性の設定が足りないときはデフォルト値を採用して取り込むといった仕組みがあると、ユーザー的にも安心するのではないかと思います。
最近は結構アップデートが多く、アップデートによるプロジェクトへの障害も度々起こっています。
GDevelopさんにはプロジェクトとの互換性を意識しながらアップデートを行っていただくように願っております…。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?