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

Project1

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

[已经解决] 自制的图片菜单,在游戏中通过对话调出,要怎么做呢?

[复制链接]

Lv1.梦旅人

梦石
0
星屑
144
在线时间
107 小时
注册时间
2012-5-16
帖子
69
跳转到指定楼层
1
发表于 2013-5-1 21:38:49 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
如题,我下载了很多范例,但是基本上都是调用窗口菜单的。
我自己制作好一个窗口菜单的图片了,就想通过脚本,加上事件,通过对话中调出来,然后再像人物状态菜单里面那样,把获取对应数值,在某个区域draw出来。

我的思路大概就是,通过Scene来create一个window,但是window里没有任何原来系统设定的那种窗口、菜单什么的,完完全全就是把我做好的图刷出来
再来就是获取游戏中某些变量,比如说人物经验值啊什么的,然后在我这个图片菜单中的某个区域把这些已经获取的数值draw出来。

问题是,我不知道怎么写···

求助一下各位大神!!

Lv1.梦旅人

梦石
0
星屑
50
在线时间
687 小时
注册时间
2012-10-29
帖子
1543
2
发表于 2013-5-1 22:22:44 | 只看该作者
简单的说,就是想做一个可以用脚本或事件调出的显示变量菜单窗口吧?
修改劇本中,仔細審查原來的劇情大綱,覺得有點不太滿意,嘗試編寫不同主角不同主線的劇情,希望能寫得出來。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
144
在线时间
107 小时
注册时间
2012-5-16
帖子
69
3
 楼主| 发表于 2013-5-1 22:24:53 | 只看该作者
j433463 发表于 2013-5-1 22:22
简单的说,就是想做一个可以用脚本或事件调出的显示变量菜单窗口吧?

1、显示多个变量
2、这个窗口其实就是我事先弄好一个的图片
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
687 小时
注册时间
2012-10-29
帖子
1543
4
发表于 2013-5-1 23:41:55 | 只看该作者
本帖最后由 j433463 于 2013-5-1 23:49 编辑
raymondyrf 发表于 2013-5-1 22:24
1、显示多个变量
2、这个窗口其实就是我事先弄好一个的图片


不太明白您的意思,如果只是一个显示变量的小窗口,那只需要一个 Widnow_XXX 的窗口脚本,并且在 Scene_Map 中建一个 create_xxx_window 视窗调用 Window_XXX.new 而已,

如果是要菜单,可以参考这样子:



Window_VarInfo
RUBY 代码复制
  1. #encoding:utf-8
  2. #==============================================================================
  3. # ■ Window_VarInfo
  4. #------------------------------------------------------------------------------
  5. #  显示变量资讯的视窗
  6. #==============================================================================
  7. class Window_VarInfo < Window_Base
  8.   #--------------------------------------------------------------------------
  9.   # ● 初始化物件
  10.   #--------------------------------------------------------------------------
  11.   def initialize
  12.     super(0, 0, Graphics.width, Graphics.height)
  13.     refresh
  14.   end
  15.   #--------------------------------------------------------------------------
  16.   # ● 重新整理
  17.   #--------------------------------------------------------------------------
  18.   def refresh
  19.     contents.clear
  20.     draw_actor_face($game_party.members[0], 10, 20)
  21.     draw_text(120, line_height * 0 + 30, 80, line_height, Vocab::param(2), 0)
  22.     draw_text(200, line_height * 0 + 30, 80, line_height, $game_actors[1].param(2), 2)
  23.     draw_text(120, line_height * 1 + 30, 80, line_height, Vocab::param(3), 0)
  24.     draw_text(200, line_height * 1 + 30, 80, line_height, $game_actors[1].param(3), 2)   
  25.   end
  26.  
  27. end



Scene_MyMenu
RUBY 代码复制
  1. #encoding:utf-8
  2. #==============================================================================
  3. # ■ Scene_MyMenu
  4. #------------------------------------------------------------------------------
  5. #  选单画面
  6. #==============================================================================
  7. class Scene_MyMenu < Scene_MenuBase
  8.   #--------------------------------------------------------------------------
  9.   # ● 开始处理
  10.   #--------------------------------------------------------------------------
  11.   def start
  12.     super
  13.     create_varinfo_window
  14.   end
  15.   #--------------------------------------------------------------------------
  16.   # ● 生成视窗
  17.   #--------------------------------------------------------------------------
  18.   def create_varinfo_window
  19.     @vf_window = Window_VarInfo.new
  20.     @vf_window.x = 0
  21.     @vf_window.y = 50
  22.     @vf_window.opacity = 0
  23.   end
  24.   #--------------------------------------------------------------------------
  25.   # ● 生成背景
  26.   #--------------------------------------------------------------------------
  27.   def create_background
  28.     @background_sprite = Sprite.new
  29.     @background_sprite.bitmap = Cache.load_bitmap("Graphics/Pictures/","Plain") #背景图
  30.     @background_sprite.color.set(0, 0, 0, 0)
  31.   end
  32.   #--------------------------------------------------------------------------
  33.   # ● 结束背景
  34.   #--------------------------------------------------------------------------
  35.   def dispose_background
  36.     @background_sprite.dispose
  37.   end
  38.   #--------------------------------------------------------------------------
  39.   # ● 刷新,侦测按钮
  40.   #--------------------------------------------------------------------------
  41.   def update
  42.     super
  43.     SceneManager.goto(Scene_Map) if Input.trigger?(:B) #就是按 Esc 结束菜单
  44.   end
  45.  
  46. end



测试截图:



基本上,在窗口中显示几个变量都只是多加几个 draw_text 分别设不同的座标显示而已,一个或多个都用的是同样的窗口脚本。

至于在地图上显示变量窗口的脚本,我以前曾贴过,虽然那是显示一个变量的,但同样多加几个 draw_text 并且把窗口长宽加大,也是可以显示多个变量,不过就是再把窗口 opacity 设为 0,加个背景图而已。
修改劇本中,仔細審查原來的劇情大綱,覺得有點不太滿意,嘗試編寫不同主角不同主線的劇情,希望能寫得出來。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
144
在线时间
107 小时
注册时间
2012-5-16
帖子
69
5
 楼主| 发表于 2013-5-2 00:07:45 | 只看该作者
j433463 发表于 2013-5-1 23:41
不太明白您的意思,如果只是一个显示变量的小窗口,那只需要一个 Widnow_XXX 的窗口脚本,并且在 Scene_M ...

您给的这个已经非常非常贴近了。
只差一点点,就是能不能背景不要变黑
就是说在我设定的那张图片不够大(故意不够大的)的时候,余下的地方是当前场景没有被菜单背景遮罩的地方,而不是黑色呢??


回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
687 小时
注册时间
2012-10-29
帖子
1543
6
发表于 2013-5-2 00:26:37 | 只看该作者
那要参考主菜单的方式了,因为实际上菜单不是在地图上的,它只是在呼叫主菜单时将当时的画面截图,然后显示在菜单背景而已,所以如果注意看主菜单背景的地图,画面是静止的。
修改劇本中,仔細審查原來的劇情大綱,覺得有點不太滿意,嘗試編寫不同主角不同主線的劇情,希望能寫得出來。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
144
在线时间
107 小时
注册时间
2012-5-16
帖子
69
7
 楼主| 发表于 2013-5-2 00:37:01 | 只看该作者
j433463 发表于 2013-5-2 00:26
那要参考主菜单的方式了,因为实际上菜单不是在地图上的,它只是在呼叫主菜单时将当时的画面截图,然后显示 ...

那请问有没有其他方法?就相当于触发后直接在原来的地方放置图片和draw数据?
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
144
在线时间
107 小时
注册时间
2012-5-16
帖子
69
8
 楼主| 发表于 2013-5-2 00:50:02 | 只看该作者
j433463 发表于 2013-5-2 00:26
那要参考主菜单的方式了,因为实际上菜单不是在地图上的,它只是在呼叫主菜单时将当时的画面截图,然后显示 ...

或者把这个黑色变透明?不管静止不静止,就是要显示到没有被遮住的地图就好了···
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
687 小时
注册时间
2012-10-29
帖子
1543
9
发表于 2013-5-2 00:57:56 | 只看该作者
本帖最后由 j433463 于 2013-5-2 01:00 编辑

或者您想要这样?是吗:


RUBY 代码复制
  1. #encoding:utf-8
  2. #==============================================================================
  3. # ■ Window_Variables
  4. #------------------------------------------------------------------------------
  5. #     地图上显示变量窗口
  6. #==============================================================================
  7. #  在不想要显示的地图备注栏中放上 <NOHPHUB> 就可以隐藏。
  8. #==============================================================================
  9.  
  10. HPHUB_X = 0 #显示变量窗口的 X 座标
  11. HPHUB_Y = 0 #显示变量窗口的 Y 座标
  12.  
  13. HPHUB_INPUT = :C #切换显示/隐藏按钮, 若不想要按钮切换, 等号右边可以清除, 或改为 nil 或 "" 或 ''
  14.  
  15. class Window_Variables < Window_Base
  16.   #--------------------------------------------------------------------------
  17.   # ● 初始化
  18.   #--------------------------------------------------------------------------
  19.   def initialize
  20.     super(0, 0, 350, 250)
  21.     self.opacity = 0
  22.     self.back_opacity = 120
  23.     @icon = 0
  24.     @variable = 0
  25.     @o_hp = 0
  26.     refresh
  27.   end
  28.   #--------------------------------------------------------------------------
  29.   # ● 刷新
  30.   #--------------------------------------------------------------------------
  31.   def refresh
  32.     rect = Rect.new(0,0,350,250)
  33.     draw_background(rect)
  34.     draw_actor_face($game_party.members[0], 10, 20)
  35.     draw_text(120, line_height * 0 + 30, 80, line_height, Vocab::param(2), 0)
  36.     draw_text(200, line_height * 0 + 30, 80, line_height, $game_actors[1].param(2), 2)
  37.     draw_text(120, line_height * 1 + 30, 80, line_height, Vocab::param(3), 0)
  38.     draw_text(200, line_height * 1 + 30, 80, line_height, $game_actors[1].param(3), 2)   
  39.   end
  40.   #--------------------------------------------------------------------------
  41.   # ● 绘制背景
  42.   #--------------------------------------------------------------------------
  43.   def draw_background(rect)
  44.     bitmap = Cache.load_bitmap("Graphics/Pictures/", "001_战士_A") #背景图
  45.     rect = Rect.new(0, 0, bitmap.width, bitmap.height)
  46.     contents.blt(contents_width - bitmap.width, contents_height - bitmap.height, bitmap, rect, 255)
  47.     bitmap.dispose
  48.   end
  49. end
  50.  
  51. #==============================================================================
  52. # ■ Scene_Map
  53. #------------------------------------------------------------------------------
  54. #      地图生成窗口
  55. #==============================================================================
  56. class Scene_Map < Scene_Base
  57.   alias new_start start
  58.   def start
  59.     new_start
  60.     @varia_window = Window_Variables.new
  61.     @varia_window.x = HPHUB_X
  62.     @varia_window.y = HPHUB_Y
  63.     @varia_window.visible = false
  64.   end
  65.   #--------------------------------------------------------------------------
  66.   # ● 刷新
  67.   #--------------------------------------------------------------------------
  68.   alias new_update update
  69.   def update
  70.     new_update
  71.     #地图备注检查
  72.     return if (/<NOHPHUB>/i.match($game_map.note)) != nil
  73.     #初始值
  74.     @show_hp_hud = true if @show_hp_hud == nil
  75.     #按键切换开/关
  76.     if HPHUB_INPUT != nil && HPHUB_INPUT != "" && HPHUB_INPUT != ''
  77.       if Input.trigger?(HPHUB_INPUT)
  78.         if @show_hp_hud != true
  79.           @show_hp_hud = true
  80.         else
  81.           @show_hp_hud = false
  82.         end
  83.       end
  84.     end
  85.     #显示/隐藏执行
  86.     if @show_hp_hud == true
  87.       @varia_window.refresh
  88.       @varia_window.visible = true
  89.     else
  90.       @varia_window.visible = false
  91.       #close_varia_window
  92.     end
  93.   end
  94.   #--------------------------------------------------------------------------
  95.   # ● 释放
  96.   #--------------------------------------------------------------------------
  97.   alias new_terminate terminate
  98.   def terminate
  99.     @varia_window.dispose
  100.     new_terminate
  101.   end
  102.   #--------------------------------------------------------------------------
  103.   # ● 关闭
  104.   #--------------------------------------------------------------------------
  105.   def close_varia_window
  106.     @varia_window.close
  107.     update until @varia_window.close?
  108.   end
  109. end
  110. #==============================================================================
  111. # ■ Game_Map
  112. #------------------------------------------------------------------------------
  113. #  管理地图的类。
  114. #==============================================================================
  115. class Game_Map
  116.   #--------------------------------------------------------------------------
  117.   # ● 取得地图备注栏
  118.   #--------------------------------------------------------------------------
  119.   def note
  120.     @map.note
  121.   end
  122. end


这是临时用以前写的地图显示HP变量脚本改的,加上背景图,可以用按钮 C 也就是空白键切换显示/隐藏,如果想用别的按钮也可以自己设定。

测试截图:


修改劇本中,仔細審查原來的劇情大綱,覺得有點不太滿意,嘗試編寫不同主角不同主線的劇情,希望能寫得出來。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
144
在线时间
107 小时
注册时间
2012-5-16
帖子
69
10
 楼主| 发表于 2013-5-2 01:00:09 | 只看该作者
j433463 发表于 2013-5-2 00:57
或者您想要这样?是吗:

看图片我觉得可以,只是可以通过对话呼出而不是按键么?
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-17 05:16

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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