Project1

标题: 如何实现,在Scene_MenuBase脚本中打开一张图片。 [打印本页]

作者: alianlord    时间: 2020-11-8 09:18
标题: 如何实现,在Scene_MenuBase脚本中打开一张图片。
想在菜单场景的指令栏的背景,用一张图片取代(盖住)原来的背景皮肤windowskin。

虽然用事件能够实现。但还是想在用脚本来实现。请各位高人指点一二。
作者: 骷髅岛遗老    时间: 2020-11-8 10:46
在Scene_MenuBase找到
  1.   #--------------------------------------------------------------------------
  2.   # ● 生成背景         
  3.   #--------------------------------------------------------------------------

  4.   def create_background
  5.     @background_sprite = Sprite.new
  6.     @background_sprite.bitmap = SceneManager.background_bitmap
  7.    
  8.     @background_sprite.color.set(16, 16, 16, 128)
  9.   end
  10.   
  11.   #--------------------------------------------------------------------------
  12.   # ● 释放背景
  13.   #--------------------------------------------------------------------------
  14.   def dispose_background
  15.     @background_sprite.dispose
  16.   end
复制代码


把这段改成
  1. #--------------------------------------------------------------------------
  2.   # ● 生成背景         #可见地图的菜单背景 包括生成和释放两部分
  3.   #                       #可以插到物品技能等别的菜单内并切换图片
  4.   #--------------------------------------------------------------------------
  5.   def create_background
  6.     @background_sprite = Sprite.new
  7.     @background_sprite.bitmap = SceneManager.background_bitmap
  8.     @menuback_sprite2 = Sprite.new
  9.     @menuback_sprite2.bitmap = Cache.title1("图片文件名")
  10. # 背景图片保存位置为Graphics\Titles1 里
  11.   end
  12.   #--------------------------------------------------------------------------
  13.   # ● 释放背景
  14.   #--------------------------------------------------------------------------
  15.   def dispose_background
  16.     @background_sprite.dispose
  17.     @menuback_sprite2.dispose
  18.   end
复制代码

作者: alexncf125    时间: 2020-11-8 10:53
本帖最后由 alexncf125 于 2020-11-8 18:37 编辑

你们(2L是不是只看了标题, 没看内容?)是怎样研究出:
对菜单场景的指令栏的背景进行修改, 是要改Scene_MenuBase??

明明是改Window_MenuCommand才对

  1. class Window_MenuCommand < Window_Command
  2.   alias window_menucommand_initialize initialize
  3.   def initialize
  4.     window_menucommand_initialize
  5.     self.windowskin = nil
  6.     draw_background
  7.   end
  8.   def draw_background
  9.     bitmap = Cache.picture("图片文件名")
  10.     contents.blt(0, 0, bitmap, bitmap.rect, 200)
  11.     bitmap.dispose
  12.   end
  13. end
复制代码


图片放在Graphics\Pictures目录
作者: alianlord    时间: 2020-11-8 12:09
骷髅岛遗老 发表于 2020-11-8 10:46
在Scene_MenuBase找到

经过实践,的确是可以实现贴出图片的功能,真是获益非浅,谢谢。
作者: alianlord    时间: 2020-11-8 12:22
alexncf125 发表于 2020-11-8 10:53
你們(2L是不是只看了标题, 没看內容?)是怎样研究出:
对菜单场景的指令栏的背景进行修改, 是要改Scene_Menu ...

经过实践的测试 。确实可以绘制出windowskin. 但是用图片位图取代了原来的系统windowskin之后。光标和绘制的指令文字不见了。可能调下z轴的高度就能解决………。

疑??z轴!窗口内部好像没办法调z轴的高度,
作者: alexncf125    时间: 2020-11-8 12:57
本帖最后由 alexncf125 于 2020-11-8 13:24 编辑
alianlord 发表于 2020-11-8 12:22
经过实践的测试 。确实可以绘制出windowskin. 但是用图片位图取代了原来的系统windowskin之后。光标和绘 ...


因为我用了自己的工程测试, 所以没有你说的问题~
新建的工程的确会出现你所说的问题~
那么...換成这样子:
  1. class Window_MenuCommand < Window_Command
  2.   alias window_menucommand_initialize initialize
  3.   def initialize
  4.     window_menucommand_initialize
  5.     create_back_bitmap
  6.     create_back_sprite
  7.   end
  8.   #------------------------------------------------- -------------------------
  9.   # ● 释放
  10.   #------------------------------------------------- -------------------------
  11.   def dispose
  12.     super
  13.     dispose_back_bitmap
  14.     dispose_back_sprite
  15.   end
  16.   #------------------------------------------------- -------------------------
  17.   # ● 生成背景位图
  18.   #------------------------------------------------- -------------------------
  19.   def create_back_bitmap
  20.     bitmap = Cache.picture("图片文件名")
  21.     @back_bitmap = Bitmap.new(width, height)
  22.     @back_bitmap.blt(0, 0, bitmap, bitmap.rect)
  23.     bitmap.dispose
  24.   end
  25.   #------------------------------------------------- -------------------------
  26.   # ● 生成背景精灵
  27.   #------------------------------------------------- -------------------------
  28.   def create_back_sprite
  29.     @back_sprite = Sprite.new
  30.     @back_sprite.bitmap = @back_bitmap
  31.     @back_sprite.y = y
  32.     @back_sprite.z = z - 1
  33.   end
  34.   #------------------------------------------------- -------------------------
  35.   # ● 释放背景位图
  36.   #------------------------------------------------- -------------------------
  37.   def dispose_back_bitmap
  38.     @back_bitmap.dispose
  39.   end
  40.   #------------------------------------------------- -------------------------
  41.   # ● 释放背景精灵
  42.   #------------------------------------------------- -------------------------
  43.   def dispose_back_sprite
  44.     @back_sprite.dispose
  45.   end
  46. end
复制代码
以上脚本的大部分代码均是截取自Window_Message
感觉那段用得上就截了那段, 也不知对不对~~
作者: alianlord    时间: 2020-11-8 13:25
我会再多测试各种可能性 ,谢谢热心的alexncf125




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1