设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
楼主: 3694260ac
打印 上一主题 下一主题

新人初到,写了一些小脚本,问些问题,谢谢!!!

 关闭 [复制链接]

Lv3.寻梦者

酱油的

梦石
0
星屑
1265
在线时间
2161 小时
注册时间
2007-12-22
帖子
3271

贵宾

11
发表于 2008-5-17 04:39:13 | 只看该作者
.........
   @num = 1000
.........
def refresh
   for i in 0...@num
   end
end

驚|||
不做頭像做簽名,看我囧冏有神(多謝山人有情提供 )
回复 支持 反对

使用道具 举报

Lv1.梦旅人

风之塞尔达

梦石
0
星屑
50
在线时间
57 小时
注册时间
2005-10-22
帖子
2492

贵宾

12
发表于 2008-5-17 08:01:03 | 只看该作者
在你的工程里  看了一下图块的输出
class Walk
p "Map Sprites Size : " + @map.sprite.size.to_s      # 3600
这个就是卡的正真原因
40*30*3 的图 RM默认其实渲染了40*30*1, 就是人眼所看到的'相对最外层'(可能还会更少, 比如使用视椎切割等)...
Graphics.update 函数每次都会更新到所有的精灵. 而你的代码中
class Map 有一句
update(1), update(2), update(3),
@sprite[(num - 1) * @sprite_num + n].bitmap.blt, 一下3600
FPS 自然降低  如果只update一层, lz的代码效率和RM差不多

测试:

NUM = 1200; # 3600;
  @sprite = Array.new(NUM)
  for i in 0...NUM
    @sprite = Sprite.new
    @sprite.bitmap = Bitmap.new(32, 32)
  end  
  loop do
    Graphics.update
    Input.update
    if Input.trigger?(Input::A)
      break
    end
  end
  for i in 0...NUM
    @sprite.dispose
  end

# NUM ==  1200 ;FPS == 40;   NUM == 3600 ;FPS == 30以下(我电脑上这样)
系统信息:本贴获得楼主认可,66RPG感谢您的热情解答~
在程序里延续塞尔达的传说, 在画板上勾勒塞尔达的轮廓!!
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
0 小时
注册时间
2008-2-18
帖子
1423
13
发表于 2008-5-17 08:37:56 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复 支持 反对

使用道具 举报

Lv1.梦旅人

风之塞尔达

梦石
0
星屑
50
在线时间
57 小时
注册时间
2005-10-22
帖子
2492

贵宾

14
发表于 2008-5-17 08:46:44 | 只看该作者
其实  我觉得  lz很厉害...
说新手只是谦虚而已
自己写map渲染不是新手可以做的, 至少我现在没那个信心!
在程序里延续塞尔达的传说, 在画板上勾勒塞尔达的轮廓!!
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
110
在线时间
6 小时
注册时间
2008-5-17
帖子
29
15
 楼主| 发表于 2008-5-17 20:09:43 | 只看该作者
恩,谢谢!!!我自己再改进改进
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
110
在线时间
6 小时
注册时间
2008-5-17
帖子
29
16
 楼主| 发表于 2008-5-17 20:11:41 | 只看该作者
我想如果把所有在一个Z坐标上的sprite整合成一个,应该会好不少
回复 支持 反对

使用道具 举报

Lv1.梦旅人

风之塞尔达

梦石
0
星屑
50
在线时间
57 小时
注册时间
2005-10-22
帖子
2492

贵宾

17
发表于 2008-5-17 20:24:34 | 只看该作者
以下引用3694260ac于2008-5-17 12:11:41的发言:

我想如果把所有在一个Z坐标上的sprite整合成一个,应该会好不少


嗯,3层的sprite都blt到一个单元上,真正需要渲染的地图数组只要一个2D就够了
update(1)  时, x,y上有物体, 就直接bt到2D数组里
update(2)  时, x,y上有物体, 直接在一次blt到update(1)上, 没有就略过
update(3)  如上

不过真的是不是这样,真是不知道了{/gg}
因为RM默认地图渲染的速度确实是和渲染一层一样快, 当然不排除Tilemap用C写
在程序里延续塞尔达的传说, 在画板上勾勒塞尔达的轮廓!!
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
110
在线时间
6 小时
注册时间
2008-5-17
帖子
29
18
 楼主| 发表于 2008-5-17 20:25:40 | 只看该作者
恩,谢谢楼上的
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
110
在线时间
6 小时
注册时间
2008-5-17
帖子
29
19
 楼主| 发表于 2008-5-17 20:26:47 | 只看该作者
不知道楼上的while和for是不是有如上所说的问题
回复 支持 反对

使用道具 举报

Lv1.梦旅人

风之塞尔达

梦石
0
星屑
50
在线时间
57 小时
注册时间
2005-10-22
帖子
2492

贵宾

20
发表于 2008-5-17 20:40:19 | 只看该作者
我一直没看出来你说的while和for的问题究竟是什么{/gg}

我一直都是让你的工程渲染一层来跑的... 一直很顺畅.. 40FPS!!
在程序里延续塞尔达的传说, 在画板上勾勒塞尔达的轮廓!!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2025-7-29 23:05

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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