第10回 オリジナルメニューに挑戦!

 2008-06-15
SS200806025047.jpgメニュー画面を改造しよう!」で、
項目の増やし方はわかると思うので、
今回はウィンドウの配置を変更したいと思います。

1.メニュー画面レイアウト
2.メニュー項目
3.ステータス画面

※ 7月3日 ステータスウィンドウの箇所を修正


今回の講座では、再定義というものを施しましょう。
デフォルトのスクリプトは、一切書き換えずに処理を置き換えるみたいな?
最初から用意された文は、そのままとっておきます。
こうすることで、原因不明のバグが出ても簡単に初期状態に戻すことができます。
これから変更するスクリプトは、"▼ 素材"のセクションに追加していきましょう。

まずは、Scene_Menu をコピペしてください。

そして、いらないメソッドは削除しちゃいましょう。
残しておくものは、下記の4つです。
1.開始処理
2.終了処理
3.コマンドウィンドウの作成
4.コマンド選択の更新

では、ウィンドウの配置から変えていきましょう。
SS200806171829.jpg

1.ゴールドウィンドウ
SS200806173547.jpgまずは、ゴールドウィンドウからです。
ゴールドウィンドウは、右上に表示させたいと思います。
x座標を決めるために、ウィンドウの横幅が知りたいです。
ウィンドウのセクションから Window_Gold を探しましょう。
はい、そのセクションの14行目で定義されていますね。
super(x, y, 160, WLH + 32)
ここで、ウィンドウの横幅は 160 だとわかったので、ゴールドウィンドウの値を変更しましょう。
015: @gold_window = Window_Gold.new(384, 0)

2.ステータスウィンドウ
次は、ステータス画面です。
Window_MenuStatus をコピペしましょう。
この画面は、ゴールドの下に配置したいわけです。
今までと同じように、クラス定義してある場所に行き、引数とウィンドウのサイズを確認しましょう。
14行目を変更します。横幅をフルサイズにします。
縦幅は大きすぎるので、小さくしましょう。
ゴールドウィンドウが、56 。コマンドウィンドウが、80 ですので、280 ですね。
014: super(x, y, 544, 280)
では、Scene_Menu に戻って、
016: @status_window = Window_MenuStatus.new(0, 56)
に変更しましょう。

3.地名ウィンドウ
その次の地名を表示するウィンドウは、もちろん自作ですね。
しかし、今回は説明する気はありません。申し訳ない
というこで、空ウィンドウを作成します。
017: @empty_window = Window_Base.new(0, 0, 384, 56)
を追記します。
ヘルプウィンドウは、新しく追加したので terminate メソッドにも
ウィンドウを削除する処理を追加します。
28行目に追加しましょう。
@empty_window.dispose

4.コマンドウィンドウ
最後にコマンドウィンドウですね。
コマンドウィンドウの作成部分を見てみると、今までとは違い特殊な感じがしますね。
@command_window = Window_Command.new(160, [s1, s2, s3, s4, s5, s6])
では、引数の確認から。コマンドウィンドウの定義場所に移動します。
Window_Command クラスですね。
initialize(width, commands, column_max = 1, row_max = 0, spacing = 32)
どうやら、160 とは横幅のことのようです。
その後、コマンド・・・と続いています。
"=" の付いたものもあります。これは、引数を省略された場合に、この値を代入します。
コマンドは、横に4つ、縦に2つの計8つのものを作りたいので、
いろいろ変更するわけですが、ブログスペースの都合上途中経過は省略させていただきます。
で、変更した結果、コマンドウィンドウは自作という結論に至りました。
大きな理由は、2つです。
1.引数が多すぎて 80 桁に収まらない。
2.コマンドが左揃いで表示される。
この2つが嫌だったので、別途用意することにしました。
ということで、Window_Command クラスをコピペします。
複製したこのクラスは、Window_MenuCommand と命名。
007: class Window_MenuCommand < Window_Selectable
に変更。

では、Window_MenuCommand を作っていきましょう。
まずは、initialize メソッドから。
021: if row_max == 0
022:   row_max = (commands.size + column_max - 1) / column_max
023: end
ここは、列数を決めてるみたいですね。
いらないので削除しちゃいましょう。
021: super(0, 0, width, row_max * WLH + 32, spacing)
ウィンドウを作成してますね。
列の数でウィンドウの縦幅が決まるみたいです。
ウィンドウのサイズは、固定してしまいましょう。
height(80) = 列数(2) * WLH(24) + 32
021: super(0, 336, 544, 80, 32)
に変更。
022: @commands = commands
023: @item_max = commands.size
024: @column_max = column_max
それぞれの値を代入してます。
変更部分は、1箇所ですね。
024: @column_max = 4
に変更。
025: refresh # リフレッシュへ飛ぶ。
026: self.index = 0 # 最初のカーソル位置
この2行は、変更する必要はなさそうです。
020: def initialize(width, commands, column_max = 1, row_max = 0, spacing = 32)
ウィンドウのサイズ関連の値は、直接指定したので、それらを削除します。
020: def initialize(commands)
コマンドだけになりました。
このコマンドは配列を受け取っていましたが、そうではなく
受け取った引数を配列化する処理に書き換えます。
020: def initialize(*commands)
と変更しましょう。

それと、もうひとつコマンドを中央揃えにしなくてはいけません。
049: self.contents.draw_text(rect, @commands[index], 1)
と書き換えてください。1を付け足しただけです。
後は、いらないコメントを削除して最終的にはこのようになります。
SS200806151418.jpg
おっと、忘れずに Scene_Menu の方も変更してあげましょう。
040: @command_window = Window_MenuCommand.new(s1, s2, s3, s4, s5, s6)
としておきましょう。
SS200806155729.jpg

では、テストプレーで見てみてください。
SS200806154842.jpg

エラーが出た方は、もう一度確認してみてください。

これで、配置変更は終了です。
どうだったでしょうか?
コマンドの追加は、できると思うので
次回は、ステータス画面を作りたいと思います。

コメント




 

 ※ コメント内にURLを含めるには、バッククォート(`)をURLの直前に付け加えてください。


管理人のみ閲覧許可 [?]

トラックバック
トラックバックURL:
http://cacaosoft.blog42.fc2.com/tb.php/60-4edf4e2f
≪ トップページへこのページの先頭へ  ≫
カレンダー
05 << 2017/06 >> 07
- - - - 1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 -

カテゴリー
最近の記事
最近のコメント
03/16 お返事
01/21 お返事
11/30 z座標
11/20 z座標
08/03 お返事

タグクラウド

リンク