Project1

标题: 游戏中画面右上角显示一个logo,不用地图事件,用脚本 [打印本页]

作者: 本圈圈本    时间: 2013-12-4 15:43
标题: 游戏中画面右上角显示一个logo,不用地图事件,用脚本
游戏进行中的任何时候都显示这个logo,就占屏幕右上角这么一块地方,淡入淡出,黑入黑出,也要有那个logo,使用地图事件可以实现,不过太麻烦了,能不能一次性用脚本解决这个问题?
作者: Sion    时间: 2013-12-4 18:57
可以在 SceneManager 的 run 方法里创建精灵显示 logo。
作者: 你最珍贵    时间: 2013-12-5 13:56
游戏开场商标Logo(两张.通用)
http://rpg.blue/thread-339160-1-1.html

作者: 本圈圈本    时间: 2013-12-5 14:52
本帖最后由 本圈圈本 于 2013-12-5 14:55 编辑

看来是我没表达清楚,假设rmva的程序icon就是我要的logo


从开始的标题画面右上角就有个logo


游戏中也是,右上角有个图片,总之,整个游戏不论地图还是战斗还是标题,右上角都有这么一张图片
作者: 本圈圈本    时间: 2013-12-5 14:56
你最珍贵 发表于 2013-12-5 13:56
游戏开场商标Logo(两张.通用)
http://rpg.blue/thread-339160-1-1.html

我不是这个意思,我好像没有表达清楚
作者: tyq4590    时间: 2013-12-5 15:32
米酒獭酱移植的地图显示血条魔条脚本基础上稍加修改即可:
http://rpg.blue/forum.php?mod=vi ... D368%26typeid%3D368
作者: 喵呜喵5    时间: 2013-12-5 18:38
本帖最后由 喵呜喵5 于 2013-12-7 13:51 编辑

RUBY 代码复制
  1. =begin
  2. ===============================================================================
  3.   边框 By喵呜喵5
  4. ===============================================================================
  5.  
  6.   【说明】
  7.  
  8.   在游戏画面中显示一个平时不会被消除的边框
  9.   边框文件放在“Graphics/system/”文件夹下,命名为Frame
  10.  
  11.   如果只是需要在地图画面上显示边框的话……请删掉这个脚本,直接用显示图片指令
  12.  
  13. =end
  14. $m5script = {} if $m5script.nil?
  15. $m5script["M5Frame"] = true
  16. module M5Frame
  17. #==============================================================================
  18. #  设定部分
  19. #==============================================================================
  20.  
  21.   SCENE = [Scene_Battle,Scene_Debug]
  22.  
  23.   #在上面设置不需要显示边框的场景
  24.   #默认的设置是战斗画面以及调试窗口不会显示边框
  25.  
  26.   SWI = 1
  27.  
  28.   #当这个开关打开的时候,不显示边框
  29.  
  30.   Z = 500
  31.  
  32.   #修改这个数值调整边框的高度,数值越大边框能遮住的东西越多
  33.  
  34. #==============================================================================
  35. #  设定结束
  36. #==============================================================================
  37. end
  38. class Scene_Base
  39.   alias m5_20131205_start start
  40.   def start
  41.     m5_20131205_start
  42.     @frame = M5SimpleWindow.new
  43.   end
  44. end
  45. class M5SimpleWindow < Window_Base
  46.   def initialize
  47.     super(0,0,Graphics.width*2,Graphics.height*2)
  48.     self.opacity = 0   
  49.     self.padding = 0
  50.     self.arrows_visible = false
  51.     self.z = M5Frame::Z
  52.     refresh
  53.     @switch = $game_switches[M5Frame::SWI]
  54.     self.visible = !@switch
  55.     update_visible if self.visible
  56.   end
  57.   def refresh
  58.     self.contents.clear
  59.     bitmap = Cache.system("Frame")
  60.     rect = Rect.new(0, 0, bitmap.width, bitmap.height)
  61.     contents.blt(0, 0, bitmap, rect, 255)
  62.     bitmap.dispose
  63.   end
  64.   def update
  65.     if @switch != $game_switches[M5Frame::SWI]
  66.       if self.visible
  67.         if $game_switches[M5Frame::SWI]
  68.           self.visible = false
  69.         end
  70.       else
  71.         if !$game_switches[M5Frame::SWI]
  72.           self.visible = true
  73.         end        
  74.       end
  75.       @switch = $game_switches[M5Frame::SWI]
  76.     end
  77.   end
  78.   def update_visible
  79.     if scene_include?
  80.       self.visible = false
  81.     else
  82.       self.visible = true
  83.     end
  84.   end  
  85.   def scene_include?
  86.     list = M5Frame::SCENE
  87.     return false if !list
  88.     list.include?(SceneManager.scene.class)
  89.   end
  90. end



↑搭配包含立绘的美化型菜单(http://rpg.blue/home.php?mod=spa ... o=blog&id=12232)的使用效果

目前有个问题,在事件页中的淡入、淡出画面LOGO会保留,切换场景时(场所移动、标题画面进入游戏etc...)的淡入淡出LOGO会跟着一起淡出,目前暂时不知道怎么让两种淡入淡出都能保留LOGO……(这两种淡入淡出的机理不同,一个是修改$game_screen.brightness 一个是修改 Graphics.brightness……)
作者: 本圈圈本    时间: 2013-12-14 23:05
不行了,琢磨了很久都搞不定…… 没法在淡入淡出的时候保留logo……
作者: rmav    时间: 2013-12-18 10:36
本帖最后由 rmav 于 2013-12-18 12:05 编辑

把以下代码作为一个插件就行。
淡入淡出时也有,战斗时也有。

RUBY 代码复制
  1. #encoding:utf-8
  2. #==============================================================================
  3. #   在游戏窗口上显示logo
  4. #------------------------------------------------------------------------------
  5. #  by rmav ()
  6. #==============================================================================
  7.  
  8.  
  9. $bitmap_logo = Cache.face("logo")      #logo.png放在Faces目录下
  10. $viewport_logo ||= Viewport.new($bitmap_logo.rect)
  11. $viewport_logo.z = 900
  12. $viewport_logo.visible = false
  13. $logo = Sprite.new($viewport_logo)
  14. $logo.bitmap = $bitmap_logo            #logo一般不会变的吧,若要变记得dispose
  15. $logo.visible = true
  16. class Scene_Base
  17.   attr_accessor :display_logo          #可随时控制是否显示logo
  18.   def initialize
  19.     @display_logo = true               #默认显示
  20.     $viewport_logo.rect.x=Graphics.width-$viewport_logo.rect.width #在右边显示
  21.   end
  22.  
  23.   alias before_logo_update update
  24.   def update
  25.     before_logo_update
  26.     $viewport_logo.visible = @display_logo
  27.   end
  28.  
  29. end


刚接触这东西,大家看看这样做会有什么问题?
-----------
顺便问下,viewport有什么用?上面的代码不用viewport直接用sprite试了2下也没什么问题。
----------
呃,想到一点,当有几个精灵时,要重新移个位置,不必一个个去校正位置。若只有一个精灵就无所谓了。
作者: 本圈圈本    时间: 2013-12-19 21:50
本帖最后由 本圈圈本 于 2013-12-20 11:46 编辑

淡入淡出问题已解决
作者: rmav    时间: 2013-12-19 21:56
用什么方法? 是不是用类似下面这种?
RUBY 代码复制
  1. class Scene_Map
  2.   #--------------------------------------------------------------------------
  3.   # ● 淡入画面
  4.   #--------------------------------------------------------------------------
  5.   def fadein(duration)
  6.     #fade_loop(duration) {|v| Graphics.brightness = v }
  7.     fade_loop(duration) {|v| @viewport.color.set(0,0,0,255-v)  }
  8.   end
  9.   #--------------------------------------------------------------------------
  10.   # ● 淡出画面
  11.   #--------------------------------------------------------------------------
  12.   def fadeout(duration)
  13.     #fade_loop(duration) {|v| Graphics.brightness = 255 - v }
  14.     fade_loop(duration) {|v| @viewport.color.set(0,0,0,v)  }
  15.  
  16.   end
  17. end





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