Project1

标题: 怎样写脚本才不会让游戏卡? [打印本页]

作者: 风若·飘絮    时间: 2013-5-5 16:53
标题: 怎样写脚本才不会让游戏卡?
本帖最后由 风若·飘絮 于 2013-5-5 16:55 编辑

如果要做像《DNF单机版(PR做的那个)》,《神剑情天3》那样的华丽游戏,需要加载很多图片,怎样写脚本才不会让游戏卡(这两个游戏都挺卡的)?



我写了一个脚本,只有一个图片,但是CPU占用90%,大家也帮忙分析下吧。
  1. class Ui
  2.   def initialize
  3.   
  4.    @tu = Sprite.new
  5.    @tu.bitmap = RPG::Cache.title("人物状态.png")
  6.    @tu.x=0
  7.    @tu.y=0
  8.    @tu.z=200
  9.    @mmm_text2 = Sprite.new
  10.    @mmm_text2.bitmap = Bitmap.new(640,480)
  11.    @mmm_text2.bitmap.font.name = (["黑体"])
  12.    @mmm_text2.bitmap.font.size = 15
  13.    @mmm_text2.bitmap.font.color = Color.new(0,0,0,255)
  14.    @mmm_text2.x = 0
  15.    @mmm_text2.y = 0
  16.    @mmm_text2.z = 99999
  17.    @mmm_text2.bitmap.draw_text(60, 30, 200, 22,"#{$game_actors[1].level}")
  18.    @mmm_text2.bitmap.draw_text(150, 30, 200, 22,"#{$data_actors[1].name}")
  19.    @mmm_text2.bitmap.draw_text(65, 130, 200, 22,"#{$game_actors[1].maxhp}")
  20.    @mmm_text2.bitmap.draw_text(65, 160-7, 200, 22,"#{$game_actors[1].maxsp}")
  21.    @mmm_text2.bitmap.draw_text(65, 190-15, 200, 22,"无")
  22.    @mmm_text2.bitmap.draw_text(65, 220-22, 200, 22,"本系统不支持活力")
  23.    @mmm_text2.bitmap.draw_text(65, 250-28, 200, 22,"不支持")
  24.    

  25.    
  26.     # 执行过渡
  27.     #Graphics.transition
  28.     # 主循环
  29.     loop do
  30.       # 刷新游戏画面
  31.       Graphics.update
  32.       # 刷新输入信息
  33.       Input.update
  34.       # 刷新画面
  35.       refresh
  36.       # 如果切换画面就中断循环'
  37.      if Input.trigger?(Input::L)
  38.        break
  39.        end
  40.      end
  41.     # 准备过渡
  42.     #Graphics.freeze
  43.     # 释放窗口
  44.      @tu.dispose
  45.      @mmm_text2.dispose
  46. end

  47. def refresh
  48.    @tu.update
  49.    
  50. end

  51. end
复制代码

作者: chd114    时间: 2013-5-5 17:03
把图片优化了
作者: 沙漠点灰    时间: 2013-5-5 17:15
以RM的性能同时显示100张还是问题不大,但看lz给出的脚本,还没发现影响性能的原因。

就是@mmm_text2的位图最后忘记释放了,@mmm_text2.dispose后面加上
@mmm_text2.bitmap.dispose就行了

当然,短时间重复生成Ui实例上面的脚本自然就会卡,lz看看是不是这个原因
作者: 风若·飘絮    时间: 2013-5-5 17:29
沙漠点灰 发表于 2013-5-5 17:15
以RM的性能同时显示100张还是问题不大,但看lz给出的脚本,还没发现影响性能的原因。

就是@mmm_text2的位 ...


我是在事件里创建的实例。
请问要怎么写才规范呢?
(其实只有这个脚本也不卡,我只是觉得CPU90%不太正常,毕竟RM内置的菜单什么的都是CPU占用20%到40%)
作者: 沙漠点灰    时间: 2013-5-5 17:46
风若·飘絮 发表于 2013-5-5 17:29
我是在事件里创建的实例。
请问要怎么写才规范呢?
(其实只有这个脚本也不卡,我只是觉得CPU90%不太正常 ...

界面的话就直接写在脚本编辑器里吧,Spriteset_Map是个不错的选择,生成与释放都在那写就行,
规范点就把硬编码换成常量就行。




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