Project1

标题: 怎么用变量获取F2的fps? [打印本页]

作者: BLUEONE    时间: 2021-8-18 10:51
标题: 怎么用变量获取F2的fps?
本帖最后由 BLUEONE 于 2021-8-19 14:43 编辑


作者: yaminolancelot    时间: 2021-8-18 10:51
  1. YAMI_FPSVARID = 1#变量id
  2. Thread.new  do
  3.   @f = 0
  4.   loop do
  5.     sleep(1)
  6.     if $game_variables
  7.       $game_variables[YAMI_FPSVARID] = Graphics.frame_count - @f
  8.       @f = Graphics.frame_count
  9.     end
  10.   end
  11. end
复制代码

作者: BLUEONE    时间: 2021-8-21 12:33
本帖最后由 BLUEONE 于 2021-8-21 12:49 编辑
yaminolancelot 发表于 2021-8-18 10:51

感谢你的回复。
但这个数字都窜到221上了..

82...64...260...120...80...110...97...76...63...141...

作者: yaminolancelot    时间: 2021-8-21 20:59
本帖最后由 yaminolancelot 于 2021-8-21 21:15 编辑
BLUEONE 发表于 2021-8-21 12:33
感谢你的回复。
但这个数字都窜到221上了..


内置算法和标题的好像不太一样,改成读标题了,不过f2关掉的时候就无效了
  1. YAMI_FPSVARID = 1#变量id

  2. ini = Win32API.new('kernel32', 'GetPrivateProfileString','PPPPLP', 'L')
  3. $game_name = "\0" * 256
  4. ini.call('Game', 'Title', '', $game_name, 256, '.\\Game.ini')
  5. $game_name.delete!("\0")
  6. wnd = Win32API.new('user32', 'FindWindowA', 'PP', 'L')
  7. $hWnd = wnd.call('RGSS Player', $game_name)
  8. k = Win32API.new('user32', 'keybd_event', 'IILL', 'V')
  9. k.call(113,0,0,0)
  10. k.call(113,0,2,0)
  11. class << Graphics
  12.   alias yami_update update  
  13.   def update
  14.     yami_update
  15.     txt =  Win32API.new('user32', 'GetWindowText','LPL', 'L')
  16.     title = "\0" * 256
  17.     txt.call($hWnd,title,256)
  18.     if $game_variables
  19.       fps = title.delete("\0").gsub($game_name, "FPS").match(/\d+/)
  20.       $game_variables[YAMI_FPSVARID] = fps ? fps[0].to_i : 0
  21.     end
  22.   end
  23. end
复制代码

作者: BLUEONE    时间: 2021-8-21 22:32
本帖最后由 BLUEONE 于 2021-8-21 22:42 编辑
yaminolancelot 发表于 2021-8-21 20:59
内置算法和标题的好像不太一样,改成读标题了,不过f2关掉的时候就无效了 ...


哦!太棒了!经过几轮的测试,您的代码十分有效!
但是就差那么一点点!
一放到事件中的条件分期就会出现锁帧(即使间隔20帧也一样)即使代给了别的变量条件分歧处理同样如此(又是rgss搞的事)
二使用ruby if语句不会锁帧但会卡顿,即使if语句间隔20帧仍然卡顿(能到9fps这种地步)。
闲话:为什么我这么执着于fps?因为我想让音乐和程序的节奏对上,因为rgss图像(和逻辑)跟音频不在一个轨道上,所以画面(和逻辑)跳了帧节奏就对不上,就乱拍了。而fps就是实时运行每秒间隔的精确帧数字。

但。这些都不重要了,最近也在钻研ruby,希望有朝一日能自行解决(让音频和图像在一个轨道上)。good night





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