查看: 1813|回复: 2

[已经解决] RMVXAce能够达成游戏中更换介面图型的情况吗?

[复制链接]
梦石
0
星屑
55
在线时间
29 小时
注册时间
2011-8-12
回帖
17
发表于 2015-7-22 10:39:30 | 显示全部楼层 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有账号?注册会员

×
本帖最后由 okpartma 于 2015-7-22 10:46 编辑

第一次发帖好紧张啊(OHO)//
总之想提问的是关於游戏中的介面!
VXA的介面更改成了只能换颜色的情况,但是我想连图一起换(设计不一样的啊#
不知道有没有什麽方法在【遊戲途中】能够令更改整张图的情况发生呢
板上好像還沒有提供類似的方法OHQ) 請大家幫幫忙 謝謝!!

是说,我对RGSS不太熟,如果有好心人想提供修改方式希望能尽量详细点>H<)
x

…あたしは天

梦石
0
星屑
2308
在线时间
4033 小时
注册时间
2010-10-4
回帖
10548

开拓者贵宾

发表于 2015-7-22 10:44:18 | 显示全部楼层
改 Graphics/System/Window.png。默认的样式参考 RTP 或者 F1 文档中的素材规格(别跟我说没汉化)

点评

感激不尽、版主大人OHO//  发表于 2015-7-22 10:55
http://rm.66rpg.com/thread-371669-1-1.html  发表于 2015-7-22 10:49
抱歉,稍微有点叙述上的错误。我想知道的应该是在游戏中,比如进行到最後一段剧情时可以更改视窗的图型OHO  发表于 2015-7-22 10:46

评分

参与人数 1星屑 +200 收起 理由
VIPArcher + 200 认可答案

查看全部评分

回复

使用道具 举报

梦石
0
星屑
22879
在线时间
8598 小时
注册时间
2011-12-31
回帖
3270
发表于 2015-7-22 11:51:26 | 显示全部楼层
http://a1tktk.web.fc2.com/scripts_page/custom_window_skin.html
ウィンドウスキン個別設定



ウィンドウスキン変更

点击展开/收起[pre lang="ruby"]=begin
      RGSS3
      
   ★ ウィンドウスキン変更 ★

      ゲーム中にウィンドウスキンの変更を可能にします。
      
      ● 使い方 ●========================================================
      設定箇所で指定した変数に格納されている値に対応した
      ウィンドウスキンが適用されます。
      --------------------------------------------------------------------
      変数の値を変更した瞬間にスキンが変更されます。
      --------------------------------------------------------------------
      イベントコマンドより下記のスクリプトを実行すると、
      プレイヤーが任意にウィンドウスキンを変更できるシーンへ移行します。
        call_skin_selection
      ====================================================================
      
      ver1.00
      
      Last Update : 2015/04/30
      4/30 : RGSS2にあったものを移植
      
      ろかん   http://kaisou-ryouiki.sakura.ne.jp/
=end

#===================================
#  ●設定箇所
#===================================
module Change_Window
  # ウィンドウスキン変更に使用する変数番号
  WINDOW_V = 5
  
  # ウィンドウスキン定義
  #【形式】
  #   ① => ["②", "③"],
  #     ① ウィンドウスキンに対応する変数の値(数値)
  #     ② ウィンドウスキンのファイル名(文字列)
  #     ③ ウィンドウスキンの名前(文字列) ※ウィンドウスキンを変更するシーンで利用されます
  SKIN_INFO = {
    0 => ["Window", "デフォルト"],
    1 => ["window2", "メタリック"],
    2 => ["window4", "森林"],
    3 => ["window5", "クールブラック"],
  }
end
#===================================
#  ここまで
#===================================

$rsi ||= {}
$rsi["ウィンドウスキン変更"] = true

class Game_Temp
  #--------------------------------------------------------------------------
  # ● 公開インスタンス変数
  #--------------------------------------------------------------------------
  attr_accessor   :skin_id          # スキン番号
  #--------------------------------------------------------------------------
  # ● オブジェクト初期化
  #--------------------------------------------------------------------------
  alias change_skin_initialize initialize
  def initialize
    change_skin_initialize
    @skin_id = 0
  end
end

class Game_Interpreter
  #--------------------------------------------------------------------------
  # ● ウィンドウ選択シーンへ移行
  #--------------------------------------------------------------------------
  def call_skin_selection
    SceneManager.call(Scene_SelectWindow)
  end
end

class Window_Base < Window
  #--------------------------------------------------------------------------
  # ● インクルード Change_Window
  #--------------------------------------------------------------------------
  include Change_Window
  #--------------------------------------------------------------------------
  # ● オブジェクト初期化
  #--------------------------------------------------------------------------
  alias change_skin_initialize initialize
  def initialize(x, y, width, height)
    change_skin_initialize(x, y, width, height)
    change_window_skin
  end
  #--------------------------------------------------------------------------
  # ● ウィンドウスキンの適用
  #--------------------------------------------------------------------------
  def change_window_skin
    self.windowskin = Cache.system(SKIN_INFO[$game_variables[WINDOW_V]][0])
  end
end

class Window_SkinSelect < Window_Base
  #--------------------------------------------------------------------------
  # ● インクルード Change_Window
  #--------------------------------------------------------------------------
  include Change_Window
  #--------------------------------------------------------------------------
  # ● オブジェクト初期化
  #--------------------------------------------------------------------------
  def initialize
    super(get_x, get_y, get_width, get_height)
  end
  #--------------------------------------------------------------------------
  # ● X 座標の取得
  #--------------------------------------------------------------------------
  def get_x
    Graphics.width / 2 - get_width / 2
  end
  #--------------------------------------------------------------------------
  # ● Y 座標の取得
  #--------------------------------------------------------------------------
  def get_y
    Graphics.height / 2 - get_height / 2
  end
  #--------------------------------------------------------------------------
  # ● 横幅の取得
  #--------------------------------------------------------------------------
  def get_width
    350
  end
  #--------------------------------------------------------------------------
  # ● 縦幅の取得
  #--------------------------------------------------------------------------
  def get_height
    100
  end
  #--------------------------------------------------------------------------
  # ● ウィンドウスキンの適用
  #--------------------------------------------------------------------------
  def change_window_skin
    super
    self.contents.clear
    self.contents.font.size = 20
    self.contents.font.color = system_color
    draw_text(0, 0, contents.width, line_height, "ウィンドウスキンを選択してください", 1)
    self.contents.font.color = normal_color
    self.contents.font.size = 23
    self.contents.font.italic = true
    draw_text(0, line_height + 15, contents.width, line_height, "- #{SKIN_INFO[$game_variables[WINDOW_V]][1]} -", 1)
    self.contents.font.italic = false
    self.contents.font.bold = true
    draw_text(0, line_height + 15, contents.width, line_height, "<<", 0)
    draw_text(0, line_height + 15, contents.width, line_height, ">>", 2)
    self.contents.font.bold = false
  end
end

class Scene_Base
  #--------------------------------------------------------------------------
  # ● インクルード Change_Window
  #--------------------------------------------------------------------------
  include Change_Window
  #--------------------------------------------------------------------------
  # ● フレーム更新
  #--------------------------------------------------------------------------
  alias change_skin_update update
  def update
    change_skin_update
    update_skin
  end
  #--------------------------------------------------------------------------
  # ● ウィンドウスキンの更新
  #--------------------------------------------------------------------------
  def update_skin
    if $game_variables[WINDOW_V] != $game_temp.skin_id
      $game_temp.skin_id = $game_variables[WINDOW_V]
      update_skin_all_windows
    end
  end
  #--------------------------------------------------------------------------
  # ● 全ウィンドウのスキン更新
  #--------------------------------------------------------------------------
  def update_skin_all_windows
    ObjectSpace.each_object(Window_Base){|window|
      window.change_window_skin unless window.disposed?
    }
  end
end

class Scene_SelectWindow < Scene_Base
  #--------------------------------------------------------------------------
  # ● 開始処理
  #--------------------------------------------------------------------------
  def start
    super
    create_background
    create_window
  end
  #--------------------------------------------------------------------------
  # ● 背景の作成
  #--------------------------------------------------------------------------
  def create_background
    @background_sprite = Sprite.new
    @background_sprite.bitmap = SceneManager.background_bitmap
    @background_sprite.color.set(16, 16, 16, 128)
  end
  #--------------------------------------------------------------------------
  # ● 終了処理
  #--------------------------------------------------------------------------
  def terminate
    super
    dispose_background
  end
  #--------------------------------------------------------------------------
  # ● 背景の解放
  #--------------------------------------------------------------------------
  def dispose_background
    @background_sprite.dispose
  end
  #--------------------------------------------------------------------------
  # ● ウィンドウの作成
  #--------------------------------------------------------------------------
  def create_window
    @skin_select_window = Window_SkinSelect.new
  end
  #--------------------------------------------------------------------------
  # ● フレーム更新
  #--------------------------------------------------------------------------
  def update
    update_change_skin unless update_call_return
    super
  end
  #--------------------------------------------------------------------------
  # ● 前のシーンに戻る
  #--------------------------------------------------------------------------
  def update_call_return
    if Input.trigger?(:B)
      Sound.play_cancel
      return_scene
      true
    else
      false
    end
  end
  #--------------------------------------------------------------------------
  # ● スキン変更の更新
  #--------------------------------------------------------------------------
  def update_change_skin
    if Input.trigger?(:RIGHT)
      Sound.play_ok
      list = SKIN_INFO.keys.sort
      $game_variables[WINDOW_V] = list[list.index($game_variables[WINDOW_V]).next]
      $game_variables[WINDOW_V] = list.first unless $game_variables[WINDOW_V]
    elsif Input.trigger?(:LEFT)
      Sound.play_ok
      list = SKIN_INFO.keys.sort
      $game_variables[WINDOW_V] = list[list.index($game_variables[WINDOW_V]) - 1]
      $game_variables[WINDOW_V] = list.last unless $game_variables[WINDOW_V]
    end
  end
end[/pre]

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部