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

Project1

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

[原创发布] 「菜单改版」

[复制链接]

Lv3.寻梦者

○赛

梦石
0
星屑
1249
在线时间
1276 小时
注册时间
2013-1-22
帖子
2246

贵宾

跳转到指定楼层
1
发表于 2014-3-1 16:18:58 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 天地有正气 于 2014-3-1 16:20 编辑

实现了改版的菜单。
效果图:


拥有滑动效果等。本来是用在我的游戏里的,因为我的游戏估计只有一个人,而且省去了部分内容,例如状态,特技等,以后会有相应的扩展版。
左边空着的地方是状态栏,但是还没有实现,过一会儿就可以了。

@Index
@map
@Person
  1. class Window_MenuCommand < Window_Selectable
  2.   def initialize
  3.     super(650-240+240,60,160,32+84)
  4.     self.contents = Bitmap.new(width - 32, height - 32)
  5.     @item_max = 4
  6.     @column_max = 2
  7.     self.index = 0
  8.     self.contents.draw_text(8,4,44,22,"物品")
  9.     self.contents.draw_text(68,4,44,22,"装备")
  10.     self.contents.draw_text(8,40,44,22,"记录")
  11.     self.contents.draw_text(68,40,44,22,"存档")
  12.   end
  13.   def update_cursor_rect
  14.     # 计算光标的宽
  15.     cursor_width = 160/ @column_max - 32
  16.     # 计算光标坐标
  17.     x = @index % @column_max * (cursor_width + 32)
  18.     y = @index / @column_max * 32 - self.oy
  19.     # 更新光标矩形
  20.     if @index == 0
  21.       self.cursor_rect.set(x+4, y, cursor_width+8, 32)
  22.     end
  23.     if @index == 1
  24.       self.cursor_rect.set(x-16, y, cursor_width+8, 32)
  25.     end
  26.     if @index == 2
  27.       self.cursor_rect.set(x+4, y+4, cursor_width+8, 32)
  28.     end
  29.     if @index == 3
  30.       self.cursor_rect.set(x-16, y+4, cursor_width+8, 32)
  31.     end  
  32.   end  
  33. end
  34. class Window_MapName < Window_Base
  35.   def initialize
  36.     super(0,0,160,64+32)
  37.     self.contents = Bitmap.new(width - 32, height - 32)
  38.     refresh
  39.   end
  40.   def refresh
  41.     self.contents.clear
  42.     text = $game_map.map_id
  43.     case text
  44.     when 3 # 主角的家 外观
  45.       text = "山村上段"
  46.     when 4 # 主角的家 内部
  47.       text = "自己的家"
  48.     when 5 # 山路
  49.       text = "山路"
  50.     when 6 # 山村
  51.       text = "山村中段"
  52.     when 7 # 村名家
  53.       text = "村民家"
  54.     when 8 # 山脚
  55.       text = "山村脚下"
  56.     when 9 # 村长家
  57.       text = "村长的家"
  58.     else
  59.       text = ""
  60.     end  
  61.     cx = contents.text_size("你在").width
  62.     self.contents.font.color = normal_color
  63.     self.contents.draw_text(0, 0, 120-cx-2, 32, "你在:")
  64.     self.contents.font.color = text_color(6)
  65.     cw = contents.text_size(text).width
  66.     self.contents.draw_text(22, 0, cw, 85, text, 2)
  67.   end
  68. end  
  69. class Scene_Menu
  70.   def main
  71.     # 生成命令窗口
  72.     @command_window = Window_MenuCommand.new
  73.     @command_window.opacity = 160
  74.     # 生成金钱窗口
  75.     @gold_window = Window_Gold.new
  76.     @gold_window.x = @command_window.x
  77.     @gold_window.y = @command_window.height + 100
  78.     @gold_window.opacity = 160
  79.     # 生成所在地窗口
  80.     @name_window = Window_MapName.new
  81.     @name_window.x = @gold_window.x
  82.     @name_window.y = @gold_window.y + 100
  83.     @name_window.opacity = 160
  84.     # 生成地图图形
  85.     @map = Spriteset_Map.new
  86.     # 执行过渡
  87.     Graphics.transition
  88.     # 移动窗口
  89.     for i in 1..3
  90.       @command_window.x -= 80
  91.       @gold_window.x -= 80
  92.       @name_window.x -= 80
  93.       Graphics.update
  94.     end  
  95.     # 主循环
  96.     loop do
  97.       # 刷新游戏画面
  98.       Graphics.update
  99.       # 刷新输入信息
  100.       Input.update
  101.       # 刷新画面
  102.       update
  103.       # 如果切换画面就中断循环
  104.       if $scene != self
  105.         break
  106.       end
  107.     end
  108.     # 准备过渡
  109.     Graphics.freeze
  110.     # 释放窗口
  111.     @command_window.dispose
  112.     @gold_window.dispose
  113.     @name_window.dispose
  114.     # 释放地图
  115.     @map.dispose
  116.   end
  117.   def update
  118.     @command_window.update
  119.     if @command_window.active == true
  120.       command_update
  121.     end  
  122.   end
  123.   def command_update
  124.     if Input.trigger?(Input::B)
  125.       $game_system.se_play($data_system.cancel_se)      
  126.       $scene = Scene_Map.new
  127.     end
  128.     if Input.trigger?(Input::C)
  129.       $game_system.se_play($data_system.decision_se)      
  130.       case @command_window.index
  131.       when 0
  132.         $scene = Scene_Item.new
  133.       when 1
  134.         $scene = Scene_Equip.new
  135.       when 2
  136.         $scene = Scene_Map.new
  137.       when 3
  138.         $scene = Scene_Save.new
  139.       end
  140.     end
  141.   end  
  142. end  
复制代码

评分

参与人数 3星屑 +365 收起 理由
怪蜀黍 + 175 奖励
化螺耕 + 40 塞糖
美丽晨露 + 150 塞糖

查看全部评分

Lv3.寻梦者

梦石
0
星屑
3841
在线时间
1966 小时
注册时间
2013-1-3
帖子
9536
2
发表于 2014-3-1 18:16:04 | 只看该作者
支持一下,推荐直接定义地图名,就不用在脚本里设置了

点评

谢谢。直接定义地图名的话可能在地图命名上有一些限制?  发表于 2014-3-1 19:54
《宿愿·寻剑篇》正式版已经发布!快去看看!点击进入论坛发布贴
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
9280
在线时间
2504 小时
注册时间
2011-5-20
帖子
15389

开拓者

3
发表于 2014-3-16 02:48:43 | 只看该作者
如果是宇宙之类的背景,你的半透明菜单上的字就看不到了
[img]http://service.t.sina.com.cn/widget/qmd/5339802982/c02e16bd/7.png
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
138 小时
注册时间
2014-3-10
帖子
67
4
发表于 2014-3-18 13:45:32 | 只看该作者
  大大,你有没有仙剑菜单或者轩辕剑的?
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-5-13 06:16

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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