◆ ウィンドウスキンの変更
2010-10-27
ゲーム中に複数のスキンを切り替えるにはどうすればいいのだろう?
ウィンドウスキンは、Window クラスの windowskin というプロパティで設定します。
ですので、windowskin で全検索して設定しているところを探せばいいわけです。
幸いなことに1箇所だけですので、それを変更してしまえば変更できるようになります。
現在、どのスキンが使用されているかを保存しなければいけないので、
Game_System クラスに新しいプロパティを追加したいと思います。
画像はセーブデータに含めることができないため、ファイル名を使うことにします。
これで、$game_system.windowskin_name でスキン名を変更できるようになりました。
次は、実際にこのスキン名をウィンドウに反映させるための処理を書きます。
この2つのスクリプトを適当な場所にコピペします。
あとは、$game_system.windowskin_name = "NewWindow" みたいな感じで、
イベントとかで変更すれば、ウィンドウのスキンが変更されます。
ただ、既に表示されているウィンドウは新しく作り直されるまで、
変更は反映されませんので注意してください。
ですので、windowskin で全検索して設定しているところを探せばいいわけです。
幸いなことに1箇所だけですので、それを変更してしまえば変更できるようになります。
現在、どのスキンが使用されているかを保存しなければいけないので、
Game_System クラスに新しいプロパティを追加したいと思います。
画像はセーブデータに含めることができないため、ファイル名を使うことにします。
class Game_System初期値は、デフォルトと同じ "Window" にしておきます。
attr_accessor :windowskin_name
alias _cao_initialize_windowskin initialize
def initialize
_cao_initialize_windowskin
@windowskin_name = "Window"
end
end
これで、$game_system.windowskin_name でスキン名を変更できるようになりました。
次は、実際にこのスキン名をウィンドウに反映させるための処理を書きます。
class Window_Baseまぁ、こんな感じです。
alias _cao_initialize_windowskin initialize
def initialize(x, y, width, height)
_cao_initialize_windowskin(x, y, width, height)
self.windowskin = Cache.system($game_system.windowskin_name)
end
end
この2つのスクリプトを適当な場所にコピペします。
あとは、$game_system.windowskin_name = "NewWindow" みたいな感じで、
イベントとかで変更すれば、ウィンドウのスキンが変更されます。
ただ、既に表示されているウィンドウは新しく作り直されるまで、
変更は反映されませんので注意してください。