Project1

标题: [自制地图名显示]关于显示出的问题,求帮忙解决! [打印本页]

作者: 我爱吴悦淇    时间: 2013-1-17 13:13
标题: [自制地图名显示]关于显示出的问题,求帮忙解决!

以上为脚本的截图

我是这么设定的

a = 1 #第一张地图的a赋值
if a = 1

描绘地图名“MAP001”

if a = 20 #第二张地图设定的a赋值

描绘地图名“MAP002”

end
end
end

然后捏传送的时候,在传送前  加入   a = 20!就这样用变量来显示地图名

但是一进去游戏,就会直接显示MAP002,先前的MAP001就被覆盖了!

如图:


作者: tommay    时间: 2013-1-17 18:54
1.楼主的脚本有问题,“如果a等于2”应为“if a==2”
2.设置地图的名称只需获得当前地图的id即可,具体处理时可以将Game_Map类的map_id属性公有化,即在最开始加一句
  1. attr_reader   :map_id
复制代码
之后在访问时只需通过$game_map.map_id即可获得。
作者: 我爱吴悦淇    时间: 2013-1-17 19:22
tommay 发表于 2013-1-17 18:54
1.楼主的脚本有问题,“如果a等于2”应为“if a==2”
2.设置地图的名称只需获得当前地图的id即可,具体处理 ...

要怎么显示地图名呢?我已经在Game_Map开头添加了那一句,然后在脚本draw_text......内添上您给的那句,然后就出状况了!

直接在脚本里定义A赋值也没用,传送的时候用  a = 2  地图名也改不了,直接就那样!

顺便问一下,论坛的个签要怎么改啊?我改了之后又变成空白了!
作者: tommay    时间: 2013-1-17 19:40
我爱吴悦淇 发表于 2013-1-17 19:22
要怎么显示地图名呢?我已经在Game_Map开头添加了那一句,然后在脚本draw_text......内添上您给的那句, ...


虽然是老帖子,但是大概的思路我还是说一下。
1.你需要定义一个变量来显示地图名,我这里为了偷懒,不另外定义变量,只是利用地图的id。(详见后文)
2.你需要有一个描绘地图名的“容器”,可以用Sprite,也可以用Window,这里使用Window。
3.你需要定义一个Window,当然不是从零开始,这里有现成的基类Window_Base让你继承。当然,写代码也可以偷懒,找一个类似功能的简单Window,例如Window_Status,先照抄,然后改。在refresh方法中,加入了一个分歧,根据不同的地图id显示不同的信息。
4.你需要在你的地图场景中显示出这个Window,于是你需要增添一些代码先初始化,再释放(并不需要update)。
5.大功告成!

当然,上面说起来和做起来都好像很简单,但是,这一切都是基于你对ruby的基本语法还有默认脚本的结构有一个大致的了解之后,才会很容易做到。所以,先看默认脚本,再试着改,最后就能自己写了。加油!

详见脚本。
  1. class Game_Map
  2.   attr_reader :map_id
  3. end

  4. class Window_MapName < Window_Base
  5.   def initialize
  6.     super(0, 0, 160, 64)
  7.     self.contents = Bitmap.new(width - 32, height - 32)
  8.     self.opacity = 0
  9.     refresh
  10.   end
  11.   def refresh
  12.     self.contents.clear
  13.     self.contents.font.color = Color.new(0,0,200)
  14.     case $game_map.map_id
  15.     when 1: map_name = "地图1"
  16.     when 2: map_name = "地图2"
  17.     when 3: map_name = "新地图"
  18.     end
  19.     self.contents.draw_text(0,0,160-32,32,map_name,1)
  20.   end
  21. end

  22. class Scene_Map
  23.   alias old_main main
  24.   def main
  25.     @map_name_window = Window_MapName.new
  26.     @map_name_window.x = 640 - @map_name_window.width
  27.     @map_name_window.y = 480 - @map_name_window.height
  28.     old_main
  29.     @map_name_window.dispose
  30.   end
  31. end
复制代码





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