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

Project1

 找回密码
 注册会员
搜索
查看: 1869|回复: 4
打印 上一主题 下一主题

[已经过期] 请教一个文字问题(有点深度)

 关闭 [复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
134 小时
注册时间
2009-11-23
帖子
57
跳转到指定楼层
1
发表于 2011-1-8 15:52:13 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

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

x
话说绘制文字用的draw_text很影响效率,所以在文字没有变化前都不会去重绘制它,但有时候,一些信息的快速变化,会导致整个游戏的速度明显降低。比如:物品栏中,鼠标移动到物品上需要显示物品的详细信息,当你在几个物品中快速移动的时候··速度就明显下降了。原因就是draw_text的问题。不知道各位大侠有什么高见,有没有哪位高手研究过draw_text的底层,有没有什么方法可以提高效率·或者用其他方法显示文字

点评

别跟我说附带的文字显示,你试试在loop 里面显示一段文字,然后用for循环··少点··就20边··按F2,看看你的帧数率吧···draw_text对游戏性能有严重影响   发表于 2011-1-8 16:51
256内存的老爷机也表示无压力……  发表于 2011-1-8 16:37

Lv1.梦旅人

梦石
0
星屑
60
在线时间
41 小时
注册时间
2008-3-5
帖子
2072
2
发表于 2011-1-8 16:22:03 | 只看该作者
本帖最后由 hitlerson 于 2011-1-8 16:29 编辑

不是draw_text的问题吧
我这个显示卡片信息的鼠标来回拖,显示一点都不卡
  1.   #---------------------------------------------------------------------------
  2.   # ● 描绘全卡片
  3.   #---------------------------------------------------------------------------
  4.   def a_draw_item(index,n=0)
  5.     return if @dataa[index] == nil
  6.     card_id = @dataa[index][0]
  7.     number  = @dataa[index][1]
  8.     index   -= @n
  9.     x = 554
  10.     y = index*44 + 76
  11.     return if index > 9
  12.     return if index < 0
  13.     @card_bitmap_a = [] if @card_bitmap_a == nil
  14.     @card_bitmap_b = [] if @card_bitmap_b == nil
  15.     @card_bitmap_a[index] = Sprite.new(@viewport5)
  16.     @card_bitmap_a[index].x, @card_bitmap_a[index].y = x, y
  17.     @card_bitmap_a[index].z = index + 1000
  18.     bitmap = RPG::Cache.picture("card/#{CARD::CARD[card_id][1][0]}")
  19.     @card_bitmap_a[index].bitmap = bitmap
  20.     @card_bitmap_b[index] = Sprite.new(@viewport5)
  21.     @card_bitmap_b[index].x, @card_bitmap_b[index].y = x, y
  22.     @card_bitmap_b[index].z = index + 10000
  23.     #@card_bitmap_b[index].bitmap = bitmap
  24.     @card_bitmap_b[index].bitmap = Bitmap.new(160,32)
  25.     @card_bitmap_b[index].bitmap.font.size = 12
  26.     #@card_bitmap_b[index].bitmap.font.color = Color.new(255,255,255,255)
  27.     @card_bitmap_b[index].bitmap.draw_text(26, -6 , 212, 32,  CARD::CARD[card_id][0].to_s, 0)
  28.     @card_bitmap_b[index].bitmap.draw_text(26, 8 , 16, 32, CARD::CARD[card_id][2][3].to_s, 1)
  29.     @card_bitmap_b[index].bitmap.draw_text(40, 8 , 24, 32, CARD::CARD[card_id][2][4].to_s, 2)
  30.     @card_bitmap_b[index].bitmap.draw_text(65, 8 , 24, 32, CARD::CARD[card_id][2][5].to_s, 2)
  31.     @card_bitmap_b[index].bitmap.draw_text(0 , 10, 24, 32, number.to_s, 2)
  32.     @card_bitmap_a[index].zoom_x, @card_bitmap_a[index].zoom_y = 0.1, 0.1
  33.   end
复制代码
你它囧一字母君谁记得……
当时那把剑离我的喉咙只有0.01工分。可是一柱香之后,这个女主人会深深的爱上我,虽然本人平生说了无数的谎话,可是这句最有效:“你应该这么做,我也应该死。
曾经有一取ID的机会放在我面前,我没有珍惜,等我失去的时候我才后悔莫及,人世间最痛苦的事莫过于此。你的剑在我的咽喉上割下去吧!不用再犹豫了!如果上天能够给我一个再来一次的机会,我绝对会取个汉字君。如果非要给这ID加点修饰的话,我希望是……红色加粗……

回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
134 小时
注册时间
2009-11-23
帖子
57
3
 楼主| 发表于 2011-1-8 16:39:25 | 只看该作者
回复 hitlerson 的帖子


如果只是文字移动··不会影响效率,如果大量文字刷新绘制的时候,肯定会影响效率
如果机子好,绘制少,可能看不出区别·但是把帧数率绘制上去·就可以看出了·
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
7981
在线时间
1183 小时
注册时间
2007-7-29
帖子
2055
4
发表于 2011-1-8 17:35:42 | 只看该作者
的确是draw_text的问题,这东西很邪恶,唉...不说了。
我很想知道你为什么高速draw_text,基本上我一个图鉴信息是描绘满萤幕,鼠标来回切换fps顶多掉3,应该沒你说的那么严重才对。
别跟我说附带的文字显示,你试试在loop 里面显示一段文字,然后用for循环··少点··就20边··按F2,看看你的帧数率吧···draw_text对游戏性能有严重影响
还有这样的测试不管是什么显示执行都会沒剩fps,loop根本沒停……

点评

可能你理解有误,因为我显示信息是基于该物品是否处于高亮状态,也就是鼠标是否在该物品上,基本上是,你的手移动多快,draw_text的刷新就有多快  发表于 2011-1-8 18:03
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
280
在线时间
1374 小时
注册时间
2005-10-16
帖子
5113

贵宾

5
发表于 2011-1-8 17:49:17 | 只看该作者
1、预处理,提前把当前界面内需要的文字等内容预先draw好
2、鼠标指向后1秒再开始draw

点评

跟我想的差不多,等鼠标指向后延迟一小段时间再进行绘制,纠结的draw_text```  发表于 2011-1-8 18:00

评分

参与人数 1星屑 +2 收起 理由
panpan8609 + 2 一种可行的处理方法

查看全部评分

我只个搬答案的
叔叔我已经当爹了~
婚后闪人了……
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-24 15:25

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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