投稿

ラベル(テキスト)が付いた投稿を表示しています

テキストを右揃え(右寄せ)や中央揃えにする方法

イメージ
ゲームを作成していると、スコアや所持金などのテキストを、右揃えで表示したいことがよくあると思います。 GDevelop での文字揃え(行揃え)には、少し工夫が必要なので、今回はその方法を解説します。 なお、v5.0.0-beta110 の時点でテキストを表示するためのオブジェクトは、 テキストオブジェクト 、 BBテキストオブジェクト 、 ビットマップテキストオブジェクト 、の3種類がありますが、今回紹介する方法はどのオブジェクトにも利用できます😉 内容が変わらないテキストの場合 そもそもテキストの内容が変化しないという場合は、エディター上でイイ感じに配置すればよいだけです😅 ただし複数行の場合は、文字揃えの設定をする必要があります。 BBテキストオブジェクトとビットマップテキストには、オブジェクトの編集画面に「行揃えの位置」というプロパティがあるので、それを選択するだけで OK です👌 しかしテキストオブジェクトは、わざわざイベントで設定しなければなりません。 例えばエディター上でこんな感じに配置して…… (ちなみに赤い縦棒は目安として置いているだけです) イベントで文字揃えを指定すれば…… このように揃ってくれます。(0123 の行に注目↓) ちょっとめんどいですねw 内容が変更されるテキストの場合 さて、ここからがやっと本題です。 スコアや所持金、はたまた台詞などを表示するテキストは、刻々と内容が変化するものです。 当然、文字数や行数も変わる場合があるのですが、上記のようにただ文字揃えを設定しただけでは、テキストが変更されたときにレイアウトが崩れてしまいます。 例えば、次の画像のように最初は良くても…… テキストが変更され、文字数などが変わってしまうと…… こんな事になってしまいます😥 これは文字揃えの設定に関係なく、これらのオブジェクトの原点は常に左上だからです。 (赤矢印の位置↓) テキスト変更前と後の画像を見比べると、原点は移動していない事がわかります。 そのため、テキストの長さが変化すると、位置がずれてしまうのです。 そこで、テキストの変更時に以下のような手順で、オブジェクトを正しい位置に移動させてやる必要があります。 原点を文字揃えしたい位置に移動する テキストを変更する 新しいテキストに合わせて原点を移動させる 文字で書くとさっぱり意味がわ...

【GDevelop】テキストオブジェクトに追記するのはヤバいというお話

イメージ
スコアやステータスなどを表示したいときに便利なテキストオブジェクトですが、正しく利用しないと処理落ちの原因になったりするので注意が必要です。 そこで GDevelop のテキストオブジェクトに対し、どういう処理をすると負荷が高いかを実験してみました。 まず、テキストオブジェクトを 8 個用意し、次のようなイベントを実行してみます。 テキスト1 には普通に「あいうえおかきくけこ」を代入します。 テキスト2 には「あ~こ」までを 1 文字ずつ加算で追加します。 テキスト3 には大量のテキストを代入します。 テキスト4 には他とは違うフォントを設定しています。 テキスト5 にはテキスト1 と同じアクションを実行します。 テキスト6 にはテキスト1 と同じ文字数分、異なるテキストを代入します。 テキスト7 には大量のテキストを一度だけ代入します。 テキスト8 には一度だけ「あ~こ」までを 1 文字ずつ加算で追加します。 それを実行したプロファイラーの結果は、次のとおりです。 (プロファイラーの使い方や見方は、また別の記事を書きます😅) events セクション内の値を見ることで、それぞれのイベントにどれだけ時間(負荷)がかかったか分かります。 セクション名 時間(ms) % of parent % of total テキスト1 0.01ms 0.67% 0.67% テキスト2(加算で追記) 1.34ms 94.62% 73.09% テキスト3(多テキスト) 0.01ms 0.64% 0.50% テキスト4(違フォント) 0.00ms 0.11% 0.09% テキスト5(同テキスト1) 0.00ms 0.08% 0.06% テキスト6(違テキスト) 0.00ms 0.07% 0.06% テキスト7(一度・多) 0.00ms 0.03% 0.03% テキスト8(一度・加算) 0.01ms 0.59% 0.46% 注目すべき点は、加算で 1 文字ずつ追記した場合の負荷の高さです。 一度に大量のテキストを代入した場合と比べても、100 倍以上の負荷がかかっています😥 追記時に内部的にどのような処理がおこなわれているのかは知りませんが、おそらく文字数が変わるたびに、文字の形状か...

GDevelop でテキストを改行する方法

イメージ
テキストオブジェクトのテキストをイベントで改行する方法が、GDevelop ではちょっと特殊なので、解説したいと思います。 ベースが JavaScript なので、改行は "\n" を入れる必要があるのかと思いきや、実は値の中で直接改行すれば良いだけです。 ちなみに、改行するための専用の関数(式)も用意されています。 それが NewLine() です。 こんな感じで、テキストに連結して使用します↓ ただし、この方法だと煩雑になりやすいので、通常は前者の方がオススメです😉

このブログの人気の投稿

【GDevelop】タイルスプライトで作る流れる背景

【GDevelop】2026年1月よりサブスク値上げ。既存ユーザーへの「神対応」と、今すぐ入るべき理由。

GDevelop でシンプルなボタンの作り方