|
发表于 2009-1-8 07:53:50
|
显示全部楼层
ID 或者是名字都可以的
下面讲解一下哈
状态那个 window_MenuStatus
就像上面我讲的 28行,它是调用Window_Base里面的一个方法def draw_actor_graphic
既然这样,自己可以做一个方法来代替之
我在Window_Base 添加了一个方法 def draw_actor_graphic_face(actor, x, y)
这样把28行的draw_actor_graphic 改成draw_actor_graphic_face 就可以了
代码- #放到Window_Base 或者是Window_MenuStatus中
- #如果别的继承类也能调用放Base里
- #--------------------------------------------------------------------------
- # ● 图形的描绘
- # actor : 角色
- # x : 描画目标 X 坐标
- # y : 描画目标 Y 坐标
- #--------------------------------------------------------------------------
- def draw_actor_graphic_face(actor, x, y)
- bitmap = Bitmap.new("Graphics/Pictures/face/"+actor.actor_id.to_s+".png")
- cw = bitmap.width
- ch = bitmap.height
- src_rect = Rect.new(0, 0, cw, ch)
- self.contents.blt(x - cw / 2, y - ch, bitmap, src_rect)
- end
复制代码
光是这样是不够的 于编号关联 你会发现 调用不了 actor_id 这个东西
PS:所以说和角色名字关联 这样可以省去这一步
好吧,既然是编号就找 Game_Actor 看看编号在哪里吧
有这么几句
- #--------------------------------------------------------------------------
- # ● 初始化对像
- # actor_id : 角色 ID
- #--------------------------------------------------------------------------
- def initialize(actor_id)
- super()
- setup(actor_id)
- end
- #--------------------------------------------------------------------------
- # ● 设置
- # actor_id : 角色 ID
- #--------------------------------------------------------------------------
- def setup(actor_id)
- actor = $data_actors[actor_id]
- @actor_id = actor_id
复制代码 很显然实力变量里有 编号的定义 但是前面没有
attr_reader :actor_id
所以无法调用
那么很简单添上就可以了
24行插入这一句- attr_reader :actor_id # 人物ID
复制代码
另:为什么找到 Game_Actor 没有经验的话就全局搜索来一步一步查找
会发现 Window_Status 中 actor = $game_party.actors 那么就去Game_Pary找 actor方法或实例变量
Game_Party中有这么几句
@actors = []
for i in $data_system.party_members
@actors.push($game_actors)
end
那么很显然 是在 Game_actors 中 而 Game_Actors 就是 Game_Actor的一个数组
那么最后定为肯定是 Game_Actor
其实有别的方法
既然知道了 是数组 ######## 看到这些有觉悟了吧 actor = $game_party.actors ,@actors.push($game_actors)
那么可以用 index方法。。。。。看F1吧我不具体说了
那么下一个,Window_SaveFile还挺麻烦的
上面的帖子我说过,52行的循环
改成下面的样子- for i in 0...@characters.size
- bitmap = Bitmap.new("Graphics/Pictures/face/"+@characters[i].to_s+".jpg")
- cw = bitmap.width
- ch = bitmap.height
- src_rect = Rect.new(0, 0, cw, ch)
- x = 300 - @characters.size * 32 + i * 64 - cw / 2
- self.contents.blt(x, 68 - ch, bitmap, src_rect)
- end
复制代码 你会发现这个东西很有意思,@characters
前面有这么一句@characters = Marshal.load(file)
那么这个就是存档的时候就存进去的,那么是干什么用的呢?
不要说他存的是Game_actor因为那是别的句子存的。。。。
既然是存档的时候存的那么去 Scene_Save 看看吧
很快就发现了这一句
# 生成描绘存档文件用的角色图形
characters = []
for i in 0...$game_party.actors.size
actor = $game_party.actors
characters.push([actor.character_name, actor.character_hue])
end
那么就明了了 存了一个数组 [图片名称,色调] 这样可以方便的调用图片来显示
那么我们来改成与编号关联的吧
- # 生成描绘存档文件用的角色图形
- characters = []
- for i in 0...$game_party.actors.size
- actor = $game_party.actors[i]
- ####################################################
- characters.push(actor.actor_id)
- ###################################################
- end
复制代码
这样就OK了
汇报完毕 |
|