2016-06-08

RGSS-改行ありヘルプ作成

ShareLink
«RGSS一覧/利用規約

デフォルトだと、ヘルプは簡潔な1行のみの表示ですよね。
自分好みのメニューレイアウトやオリジナルさを演出したい、となると
「詳しい内容を詰め込みたいのに困った!」
なんて事も出てくるかと思います。

そういうわけで、
1行だけじゃ詰め込めない説明文を表示するために
2行以上のヘルプウィンドウを作ってみましょう。




【今回の変更点】
・Window_Help




■Window_Help

用意するのは「Window_Help」クラス。
1行と複数行で使い分けたいなどあれば、Window_Helpをまるっとコピー&ペーストしてクラス名を変えて作ります。
Window_Baseを参照するので < Window_Baseはそのままでok。
(例:"class Window_Multihelp < Window_Base")

オブジェクト初期化処理で好きな位置・サイズにウィンドウを作成。
複数行になるので、とりあえず必要なだけの縦大きさにしておくように。
初期化は他はこれといっていじらなくても大丈夫です。
 def initialize
  super(横位置, 縦位置, 横大きさ, 縦大きさ)
  self.contents = Bitmap.new(width - 32, height - 32)
 end

次に、def set_text(text, align = 1)を改造。
text には、ヘルプに記載する内容が入ります。alignは文字寄せの設定ですが、
今回の方法では一文字ずつ抽出・描画させる方法をとるので(text)だけにしておきます(技術不足でごめんね!)

中身は全部入れ替えます。
 self.contents.clear
 t = text.clone
 x = 0
 y = 0
 t.gsub!(/\\[Nn]/) { "\002" }
 while ((c = t.slice!(/./m)) != nil)
  # \n なら改行する
  if c == "\002"
   x = 0
   y += 1
  end
  self.contents.draw_text(x, 32 * y, 32, 32, c)
  x += self.contents.text_size(c).width
 end

メッセージ表示の描画方法を参考に作ってみました。
これで、アイテムやスキルの説明に「\n」を挿入しておけば改行されるようになりました。

text.cloneでtextのクローンを作成し、sliceでクローンを一文字ずつスライスして改行「\n」の部分を求めて改行。
クローンじゃなく直接textをスライスしてしまうと、次回から説明が空っぽになるので注意。
printで見たらわかると思いますが、スライスした文字は消えていきます。

クローンは生贄ということですね…(((´Д`)))ガクブル


ウィンドウの表示は
Window_Helpを表示している(作成している)スクリプトを参考・置き換えなどして試してみてください。




メッセージ表示などを参考にして作った簡易型の改行対応ヘルプの作成方法ですが、
特に中央寄せなどこだわりがなければ、ある程度は使えるかなと。

あと、それこそメッセージのスクリプトを参考に
制御文字で色付けしたり文字の大きさを変えるといった方法もできますので、自分なりにアレンジして使ってみてはいかがでしょうか。
少しでも参考になったなら幸いです。

ゲーム制作頑張りましょう!

category: