Project1

标题: 【不是创意的创意】游戏里显示FPSv1.2(2011年6月18日更新) [打印本页]

作者: 精灵使者    时间: 2011-6-18 13:57
标题: 【不是创意的创意】游戏里显示FPSv1.2(2011年6月18日更新)
本帖最后由 精灵使者 于 2011-6-18 16:23 编辑

这个版本XP和VX通用,使用方法参考说明。
效果:右上角以数字方式显示游戏的FPS,方便测试。
v1.1 紧急修正F12错误(感谢美兽大人)
v1.2 yangff决议,修正了核心算法,更加准确。
  1. ############################################################################
  2. # 显示游戏的FPS v1.2(XP&VX)
  3. # 作者:yangff 精灵使者
  4. # 使用方法:直接插入脚本的最上面即可
  5. # 如果不想显示的话,请删除$sc相关的部分即可
  6. # 调用fps的方法为:Graphics.fps
  7. # v1.1 紧急修正了F12错误。
  8. # v1.2 根据yangff的建议修正了算法。
  9. ############################################################################
  10. class <<Graphics
  11.   alias :old_update update unless method_defined? :old_update
  12.   alias :old_transition transition unless method_defined? :old_transition
  13.   alias :old_freeze freeze unless method_defined? :old_freeze
  14.   def transition(*args)
  15.     $sc.bitmap.clear
  16.     $sc.bitmap.draw_text(0,0,32,32,@fps.to_s)
  17.     old_transition(*args)
  18.     if @sec !=Time.now.sec
  19.       @sec = Time.now.sec
  20.       @fps = Graphics.frame_count - @frames
  21.       @frames = Graphics.frame_count
  22.     end
  23.     @fps = @fps < 0 ? 0 : @fps
  24.     @fps = @fps > Graphics.frame_rate ? Graphics.frame_rate : @fps
  25.   end
  26.   def update(*args)
  27.     $sc.bitmap.clear
  28.     $sc.bitmap.draw_text(0,0,32,32,@fps.to_s)
  29.     old_update(*args)
  30.     if @sec !=Time.now.sec
  31.       @sec = Time.now.sec
  32.       @fps = Graphics.frame_count - @frames
  33.       @frames = Graphics.frame_count
  34.     end
  35.     @fps = @fps < 0 ? 0 : @fps
  36.     @fps = @fps > Graphics.frame_rate ? Graphics.frame_rate : @fps
  37.   end
  38.   def freeze(*args)
  39.     $sc.bitmap.clear
  40.     $sc.bitmap.draw_text(0,0,32,32,@fps.to_s)
  41.     old_freeze(*args)
  42.     if @sec !=Time.now.sec
  43.       @sec = Time.now.sec
  44.       @fps = Graphics.frame_count - @frames
  45.       @frames = Graphics.frame_count
  46.     end
  47.     @fps = @fps < 0 ? 0 : @fps
  48.     @fps = @fps > Graphics.frame_rate ? Graphics.frame_rate : @fps
  49.   end
  50.   def _init_fps_count
  51.     @sec = Time.now.sec
  52.     @fps = 0
  53.     @frames = Graphics.frame_count
  54.   end
  55.   def fps
  56.     return @fps
  57.   end
  58. end
  59. Graphics._init_fps_count

  60. $sc=Sprite.new
  61. $sc.z=999999
  62. $sc.bitmap=Bitmap.new(32,32)
  63. $sc.x = 500
  64. $sc.y = 16
复制代码
效果截图:

可以用内置的Graphics.fps来做更好的效果
作者: liqunsz    时间: 2011-6-18 14:01
这样的话显示fps给玩家是个不错的参考呢,不如加上一幅图?
作者: 寂静的夜里    时间: 2011-6-18 15:45
直接按F2 显示的不是一样?........
作者: px.凤翔九天    时间: 2011-6-18 15:51
表示fps主要被我用来改良手感了....真正游戏的时候玩家估计不会去管那个蹦来蹦去的数字的吧........
作者: yangff    时间: 2011-6-18 15:57
其实算的一点都不准真的
作者: 精灵使者    时间: 2011-6-18 16:24
根据yangff的要求,更新到v1.2
作者: 天使喝可乐    时间: 2011-6-19 10:59
有否办法 按一个键才显示(直接显示有点碍事) 显示的是一个弹窗print然后 按照fps多少给予提示
----------------------
游戏测速      |X|
----------------------
你的fps为: --
“你使用的计算机档次太低,请关闭一些效果而增强游戏性能。”

“你的速度符合标准,祝您游戏愉快。”
----------------------
作者: zx16589042    时间: 2011-8-30 14:47
本帖最后由 zx16589042 于 2011-8-30 14:48 编辑

升级!最好直接内部调用
作者: 精灵使者    时间: 2011-8-30 15:17
内部调用入口:Graphics.fps
作者: 忧雪の伤    时间: 2011-8-30 16:00
本帖最后由 忧雪の伤 于 2011-8-30 16:05 编辑

本人正式得到副职:脚本爆破手。
  1. 9999.times { $sc = nil }
  2. GC.start
复制代码

作者: 精灵使者    时间: 2011-12-27 00:44
精灵确认,ACE此脚本同样有效。




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