GameMaker 日本語掲示板

会話イベントをDialog Systemを用いて作成しようとしているのですが、、、

4 コメント
views
17 フォロー

会話イベントを下記動画で紹介されているDialog Systemという方法を使って作ろうとしています。

https://www.youtube.com/watch?v=rEYSi0ahC5Q

動画では各文字をsprite化?していて、順番をちゃんとしないといけないみたいなことを仰っているのですが、
これってもしかして日本語出来ないのでは?と思ったので質問させて頂きました。
わかる方いましたらよろしくお願いします!🙋‍♀️

kisena
作成: 2021/09/14 (火) 20:38:46
通報 ...
1
生高橋 2021/09/14 (火) 23:13:41

可能ですが超大変です!
文字はパソコン上では数字(文字コード)が割り当てられていて
例) 大文字Aなら41、大文字Bなら42 となってます
文字画像をつくるときは文字コードの順番に配置して読み取ります。
基本的に英数字や基本的な記号は0 ~ 127番目までなのでなんとかできますが、ひらがななどは12400番目、漢字なんかもっといみわからんところにあったりします。
それらの順番などをしっていて画像を配置できれば可能ですがかなり大変です。

上記のチュートリアルのFontの読み込み部分をSpriteではなく、Fontの読み込みに変更したほうがやりやすいです。
また、読み込み方法が違くても上記のチュートリアルは問題なくできそうです。
FontはSpriteをつくって実行中に読み込まなくてもGMSのEditor上で読み込むこともできます。
日本語に対応しているFontを読み込み、ゲーム内で使うであろう文字を入力すればgms内部にフォントの画像を用意してもらえたりします。

日本語フォントの読み込みに関して表示などまでまとめてあるサイト

GameMakerStudio2で日本語を表示する方法
GameMakerStudioを使っていて、日本語を表示させたい!って思ったことはない?実はGMSデフォルトで、日本語を認識する事ができないんだ!なので今回は、GMSで日本語を表示できるようにする方法を解説するよ!既に旧1.4バージョンでの方法が、日本語で丁寧に解説されているので、この記事ではGameMakerStudio 2を対象に説明するね!
初心者でもできる!ゲーム開発

2
asa 2021/09/14 (火) 23:20:12 修正

動画ではフォントを font_add_sprite()でglobal.font_mainというスプライトフォントを作っています。
で、そのフォントで draw_text_ext()でテキストを表示しています。

draw_textでテキスト表示するのは日本語でも同じやり方です。
問題は、日本語で使う文字全てをfont_add_spriteでスプライトフォントにするのは無理ってことです。
(限られた文字しか使わないのであれば可能です)

そこで、日本語フォントは下記の手順で作ります。
日本語フォントを作ったらあとは動画の方法でそのまま使えます。

アセットブラウザでフォントを新規作成します。
画像1

フォントエディタが開くので、
1)で日本語フォントを選択します。
2)でサイズなどを設定して、
3)をクリックします。
画像2

(1)か(2)を選びます。
(1)を選ぶとコード中に使われている文字が自動でスプライトフォントに追加されます。
(2)を選ぶと外部テキストファイルを読み込んで、そこで使われている文字が追加されます。
動画ではコード中のテキストを表示しているので、(1)を選びます。
最後に(3)のAdd Rangeをクリックします。
画像3

これで日本語のスプライトフォントができました。

このフォントを使って、以下のコードで日本語が表示されるか試してください。
(仮にフォント名はfont_jpとします)

オブジェクトのDraw(またはDraw_GUI)イベント

text = "あいうえお今日は晴れです。";
draw_set_font(font_jp);
draw_text(10, 10, text);

これが表示されれば、フォントは作れてます。このフォントをチュートリアル動画でそのまま使ってください。

3
kisena 2021/09/14 (火) 23:33:17

丁寧な説明ありがとうございます!!
フォントに関して曖昧だったのでとても助かります。

これからもよろしくお願いします!!

4
asa 2021/09/14 (火) 23:43:08 修正 >> 3

書き忘れてました。
「From Code」でフォントに文字を追加する場合は、
コード中に使いたい文字を書いた後で、フォントにAdd Rangeしてください。

順序が逆になると、コード中に文字がない状態でAdd Rangeすることになり、フォントに文字が追加されませんのでご注意ください。