幻想森林

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
楼主: 幻耶

[已解决] 这个ARPG血条脚本对游戏速度影响很大,有办法优化么?

[复制链接]

550

主题

9116

帖子

214748万

积分

超级版主

如同神一般的存在,腿神!拖后腿的神~~

Rank: 8Rank: 8

积分
2147483647
发表于 2009-12-21 15:13:54 | 显示全部楼层
这就对了。。。因为刚开始的时候没有刷新啊。。。那么bitmap实际上是空的啊。。。

要在载入地图的时候刷新一下所有事件的血条。。
我就是你们的神,庶民们,追随我吧!跟着我一起拖后腿!
回复 支持 反对

使用道具 举报

40

主题

190

帖子

1635

积分

⑥精研

●~  ●~   ●

积分
1635
 楼主| 发表于 2009-12-21 15:37:13 | 显示全部楼层
那又要怎么写啊?刷新地图没用啊
$scene = Scene_Map.new
回复 支持 反对

使用道具 举报

550

主题

9116

帖子

214748万

积分

超级版主

如同神一般的存在,腿神!拖后腿的神~~

Rank: 8Rank: 8

积分
2147483647
发表于 2009-12-21 15:50:46 | 显示全部楼层
不是这样的。。。
for i in XXXX需要刷新的事件号什么的。。。
@sprite.bitmap = Bitmap.new
@sprite.bitmap.fill_rect(XXX)就可以了
end
这个样子。。就像初始化似的。。。这个写在脚本编辑器里
我就是你们的神,庶民们,追随我吧!跟着我一起拖后腿!
回复 支持 反对

使用道具 举报

40

主题

190

帖子

1635

积分

⑥精研

●~  ●~   ●

积分
1635
 楼主| 发表于 2009-12-21 16:05:37 | 显示全部楼层
比如说是1~20号事件,for i in 。。。怎么写啊?

for i in XXXX
  @sprite.bitmap = Bitmap.new
  @sprite.bitmap.fill_rect(100,100, hp, 2,  Color.new(255,  0, 51))
end
回复 支持 反对

使用道具 举报

40

主题

190

帖子

1635

积分

⑥精研

●~  ●~   ●

积分
1635
 楼主| 发表于 2009-12-21 16:07:35 | 显示全部楼层
直接写在这脚本的 def update 下面?
。。。。。
。。。
。。。。。。
  alias :update_hp_sp :update
  def update
    update_hp_sp
    @sprite.x = self.x - 115
    @sprite.y = self.y - 150

for i in XXXX
  @sprite.bitmap = Bitmap.new
  @sprite.bitmap.fill_rect(100,100, hp, 2,  Color.new(255,  0, 51))
end
回复 支持 反对

使用道具 举报

550

主题

9116

帖子

214748万

积分

超级版主

如同神一般的存在,腿神!拖后腿的神~~

Rank: 8Rank: 8

积分
2147483647
发表于 2009-12-21 16:14:38 | 显示全部楼层
class Sprite_Character < RPG::Sprite
  attr_accessor :character                # 角色
  def initialize(viewport, character = nil)
    super(viewport)
    @character = character
    @sprite = Sprite.new
    @sprite.bitmap = Bitmap.new(160, 220)
    @sprite.bitmap.fill_rect(100,100, hp, 2,  Color.new(255,  0, 51)) if @character.id > 0 && @character.id < 21
    update
  end

不是有这个么??
可以这样啊。。
如果你只要 20号以内的有 血条。。其他事件无血条。。你最好这块改一下。。。你引入了不必要的精灵。。不掉帧是不可能的。。。事件越多掉帧越快。。。。当然你的电脑配置好的话。。觉得没什么那就不改也成

    @sprite = Sprite.new
    @sprite.bitmap = Bitmap.new(160, 220)
    @sprite.bitmap.fill_rect(100,100, hp, 2,  Color.new(255,  0, 51)) if @character.id > 0 && @character.id < 21

改成
if @character.id > 0 && @character.id < 21
    @sprite = Sprite.new
    @sprite.bitmap = Bitmap.new(160, 220)
    @sprite.bitmap.fill_rect(100,100, hp, 2,  Color.new(255,  0, 51))
  end
我就是你们的神,庶民们,追随我吧!跟着我一起拖后腿!
回复 支持 反对

使用道具 举报

550

主题

9116

帖子

214748万

积分

超级版主

如同神一般的存在,腿神!拖后腿的神~~

Rank: 8Rank: 8

积分
2147483647
发表于 2009-12-21 16:22:12 | 显示全部楼层
另外,不要忘记dispose
  def dispose
    if @sprite
      @sprite.bitmap.dispose
      @sprite.dispose
    end
    super
  end
我就是你们的神,庶民们,追随我吧!跟着我一起拖后腿!
回复 支持 反对

使用道具 举报

40

主题

190

帖子

1635

积分

⑥精研

●~  ●~   ●

积分
1635
 楼主| 发表于 2009-12-21 16:28:48 | 显示全部楼层
额~~下班了,回去再试试
回复 支持 反对

使用道具 举报

550

主题

9116

帖子

214748万

积分

超级版主

如同神一般的存在,腿神!拖后腿的神~~

Rank: 8Rank: 8

积分
2147483647
发表于 2009-12-21 16:30:10 | 显示全部楼层
呀,上班还可以上网玩RM。。。真HIGH 什么工作,你那缺不缺人手
我就是你们的神,庶民们,追随我吧!跟着我一起拖后腿!
回复 支持 反对

使用道具 举报

40

主题

190

帖子

1635

积分

⑥精研

●~  ●~   ●

积分
1635
 楼主| 发表于 2009-12-22 11:22:30 | 显示全部楼层
专卖行业了。。。  
改成下面这样?出错了

class Game_Player < Game_Character
def name
  return $game_party.actors[0].name
end
end

# 添加上面,我就是为了做一个判断,只让主角显示HPSP,如果你是ARPG等都要显示 自己省略
class Sprite_Character < RPG::Sprite
  attr_accessor :character                # 角色
  def initialize(viewport, character = nil)
    super(viewport)
    @character = character
  if @character.id > 0 && @character.id < 21
    @sprite = Sprite.new
    @sprite.bitmap = Bitmap.new(160, 220)
    @sprite.bitmap.fill_rect(100,100, hp, 2,  Color.new(255,  0, 51))
  end
    update
  end
  HPSP血条长度 = 30

  alias :update_hp_sp :update
  def update
    update_hp_sp
    @sprite.x = self.x - 115
    @sprite.y = self.y - 150


   
   
   if @character.name.include?("守卫1,")
       name = @character.name
       data = name.split(/,/)  #装载数据
       name = data
     if  @hp != data[1].to_i or @maxhp != data[2].to_i
       @hp = data[1].to_i
       @maxhp = data[2].to_i
       hp = HPSP血条长度/(data[2].to_f/data[1].to_f)
       if $game_switches[204] == true
         hp = 0
       end
       if $game_variables[5] > 0
         @sprite.bitmap.clear
         @sprite.bitmap.fill_rect(100,100, hp, 2,  Color.new(255,  0, 51))
       end
     end
   end
   
   if @character.name.include?("守卫20,")
       name = @character.name
       data = name.split(/,/)  #装载数据
       name = data
     if  @hp != data[1].to_i or @maxhp != data[2].to_i
       @hp = data[1].to_i
       @maxhp = data[2].to_i
       hp = HPSP血条长度/(data[2].to_f/data[1].to_f)
       if $game_switches[318] == true
         hp = 0
       end
       if $game_variables[5] > 0
         @sprite.bitmap.clear
         @sprite.bitmap.fill_rect(100,100, hp, 2,  Color.new(255,  0, 51))
       end
     end
   end

end
end

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|幻想森林

GMT+8, 2024-5-14 23:19 , Processed in 0.021276 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表