查看: 23737|回复: 12

[已发主站] [新手教程]怎么添加菜单背景

[复制链接]

番茄

梦石
0
星屑
49
在线时间
296 小时
注册时间
2010-7-4
回帖
401
发表于 2012-5-15 23:57:01 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 ilmynasan 于 2012-5-15 11:19 编辑

相信各位已经知道怎么修改菜单窗口的位置了……
具体请看其他各位的教程~
第一蛋 (by 小镜子): http://rpg.blue/thread-221522-1-1.html
第二蛋 (by 小镜子): http://rpg.blue/thread-222057-1-1.html
第三章 (by 345912390) : http://rpg.blue/thread-226295-1-4.html
第四章 (by 345912390) : http://rpg.blue/thread-226400-1-1.html

-------------------------------------------------------------------------------------------------------

1。先打开一下默认游戏的菜单(若你该窗口的话,界面应该和我不一样的)
1.png
我用红色圈起来的地方没有窗口,可是不是还是变黑了吗?
这是应为RM的脚本里就默认打开窗口时会添加一个背景
我们要改的,就是这个背景

2。按F11进入脚本的Scene_MenuBase找到这行
[pre lang="php" line="9"]  #--------------------------------------------------------------------------
  # ● 开始处理
  #--------------------------------------------------------------------------
  def start
    super
    create_background
    @actor = $game_party.menu_actor
  end[/pre]
其中的 create_background 就是加了那层黑色的代码

3。再往下看
[pre lang="php" line="24"]  #--------------------------------------------------------------------------
  # ● 生成背景
  #--------------------------------------------------------------------------
  def create_background
    @background_sprite = Sprite.new
    @background_sprite.bitmap = SceneManager.background_bitmap
    @background_sprite.color.set(16, 16, 16, 128)
  end[/pre]
这些是具体画出那个背景层次的代码
[pre lang="php"]    @background_sprite = Sprite.new[/pre]
是画出一个sprite(可以想做图像)的代码
[pre lang="php"]    @background_sprite.bitmap = SceneManager.background_bitmap[/pre]
是指定上行画出的sprite的具体图像,在这里,它指定了SceneManager.background_bitmap,一个RM自动生成的单色图像
[pre lang="php"]    @background_sprite.color.set(16, 16, 16, 128)[/pre]
是具体指定sprite的颜色,以及亮度(前三个分别代表 红,绿,蓝,最后一个代表亮度)

所以说,我们要改的就是这些行

4。准备好一个背景图放入任何一个文件(可是为了整理啥的,咱们这里就放进Titles1文件夹吧)
Menu_Back.png
3.PNG
然后记得那行指定图像的代码吗?
把它改了
[pre lang="php"]    @background_sprite.bitmap = Cache.title1("Menu_Back")[/pre]
[pre lang="php"]Cache[/pre]
是内存的代码(把它想做My Computer吧)
[pre lang="php"]title1[/pre]
就是文件名,注意是小写 (不过为什么是title而不是titles我就不知道了……
[pre lang="php"]("Menu_Back")[/pre]
就是具体文件名
Microsoft的
[pre lang="php"]C:\MyDocument[/pre]
的 \ 就相当于 RGSS里的 .
指定名字等文字时,必须得用 “ ”围起来
指定文件时,必须得用 ( ) 圈起来

5。再次打开菜单,你会发现背景已经被改了
4.PNG
可是颜色太深了,根本看不叫图片
那么现在你就得改
[pre lang="php"]    @background_sprite.color.set(16, 16, 16, 128)[/pre]
这行了

其实,大部分人在修改背景图片时,颜色亮度已经大概修改完毕了,所以这行是不需要的
可以直接删了

6。再次打开窗口,图片已经变成原本的亮度了
5.PNG
可是有些人看着这图,觉得窗口的背景颜色很碍眼想删掉
这个是属于Window的脚本范围
拿那个选择栏为例

7。进入Window_MenuCommand脚本
在[pre lang="php" line="15"]  #--------------------------------------------------------------------------
  # ● 初始化对象
  #--------------------------------------------------------------------------
  def initialize
    super(0, 0)
    select_last
  end[/pre]
的select_last前面加入
[pre lang="php"]self.opacity = 0[/pre]
这样这个窗口就变成透明的了(当然这里已改成透明,其他所有需要这个脚本的地方也会变透明,各位请注意了~
6.PNG
(请无视其他窗口颜色被改


8。同样的,把菜单里的 金钱窗口(Window_Gold)和状态窗口 (Window_MenuStatus)
最后成功结束!
7.PNG
(当然金钱窗口别的地方也需要……所以你这里可以专门建一个新的 菜单专用的金钱窗口

当然这个教程不包括改变各个窗口的位置……这个你可以按照以前的教程自己琢磨琢磨
各位Enjoy~
有空把自己的菜单登出来吧~

评分

参与人数 2星屑 +400 赞 +6 收起 理由
Shy07 + 6 主站收录
Kimu + 400 发布奖励

查看全部评分

梦石
0
星屑
48
在线时间
543 小时
注册时间
2011-6-25
回帖
395
发表于 2012-5-19 10:08:07 | 显示全部楼层
本帖最后由 poiuy12348609 于 2012-5-19 15:56 编辑

请问
[pre lang="RGSS" line="0"]
#encoding:utf-8
#==============================================================================
# ■ Window_MenuStatus
#------------------------------------------------------------------------------
#  菜單畫面中,顯示隊伍成員狀態的窗口
#==============================================================================

class Window_MenuStatus < Window_Selectable
  #--------------------------------------------------------------------------
  # ● 定義實例變量
  #--------------------------------------------------------------------------
  attr_reader   :pending_index            # 保留位置(整隊用)
  #--------------------------------------------------------------------------
  # ● 初始化對象
  #--------------------------------------------------------------------------
  def initialize(x, y)
    super(x, y, window_width, window_height)
    @pending_index = -1
    refresh
  end
  #--------------------------------------------------------------------------
  # ● 獲取窗口的寬度
  #--------------------------------------------------------------------------
  def window_width
    Graphics.width - 160
  end
  #--------------------------------------------------------------------------
  # ● 獲取窗口的高度
  #--------------------------------------------------------------------------
  def window_height
    Graphics.height
  end
  #--------------------------------------------------------------------------
  # ● 獲取項目數
  #--------------------------------------------------------------------------
  def item_max
    $game_party.members.size
  end
  #--------------------------------------------------------------------------
  # ● 獲取項目的高度
  #--------------------------------------------------------------------------
  def item_height
    (height - standard_padding * 2) / 4
  end
  #--------------------------------------------------------------------------
  # ● 繪制項目
  #--------------------------------------------------------------------------
  def draw_item(index)
    actor = $game_party.members[index]
    enabled = $game_party.battle_members.include?(actor)
    rect = item_rect(index)
    draw_item_background(index)
    draw_actor_face(actor, rect.x + 1, rect.y + 1, enabled)
    draw_actor_simple_status(actor, rect.x + 108, rect.y + line_height / 2)
  end
  #--------------------------------------------------------------------------
  # ● 繪制項目的背景
  #--------------------------------------------------------------------------
  def draw_item_background(index)
    if index == @pending_index
      contents.fill_rect(item_rect(index), pending_color)
    end
  end
  #--------------------------------------------------------------------------
  # ● 按下確定鍵時的處理
  #--------------------------------------------------------------------------
  def process_ok
    super
    $game_party.menu_actor = $game_party.members[index]
  end
  #--------------------------------------------------------------------------
  # ● 返回上一個選擇的位置
  #--------------------------------------------------------------------------
  def select_last
    select($game_party.menu_actor.index || 0)
  end
  #--------------------------------------------------------------------------
  # ● 設置保留位置(整隊用)
  #--------------------------------------------------------------------------
  def pending_index=(index)
    last_pending_index = @pending_index
    @pending_index = index
    redraw_item(@pending_index)
    redraw_item(last_pending_index)
  end
end
[/pre]
要改在哪里???

点评

改了  发表于 2012-5-19 15:57
这个应该是决定光标位置的吧…… 是需要改什么?  发表于 2012-5-19 13:25


------------------------------------------我只放我看中的遊戲-----------------------------------------------
臉書:http://www.facebook.com/brian.lee.52643821
  音速君的論壇
回复

使用道具 举报

梦石
0
星屑
2306
在线时间
1010 小时
注册时间
2012-4-30
回帖
1455

开拓者

发表于 2012-6-2 12:30:27 | 显示全部楼层
表示所有窗口的透明度可以在调用的Scene里改的。
用
  1. 变量 =窗口名.new
  2. 变量.opacity = 透明度
复制代码
来改
回复

使用道具 举报

梦石
0
星屑
48
在线时间
543 小时
注册时间
2011-6-25
回帖
395
发表于 2012-6-14 18:31:07 | 显示全部楼层
2012-06-14_182951.png


------------------------------------------我只放我看中的遊戲-----------------------------------------------
臉書:http://www.facebook.com/brian.lee.52643821
  音速君的論壇
回复

使用道具 举报

梦石
0
星屑
49
在线时间
152 小时
注册时间
2012-1-12
回帖
392
发表于 2012-6-14 19:37:10 | 显示全部楼层
应该附加上更改窗口位置的教程,这样二合一还可以赚赚经验{:2_262:}
回复

使用道具 举报

梦石
0
星屑
100
在线时间
60 小时
注册时间
2012-6-22
回帖
18
发表于 2012-6-30 20:47:46 | 显示全部楼层
本帖最后由 bob20504 于 2012-6-30 20:48 编辑

我除了加菜單背景還改了Graphics\System裡面的Window
不知道圖會不會不好看...(因為要別人看才會准.. 玩得不是我.. )
5.JPG
我剛開始以為只有上面這張會變
不過後來才發現原來物品狀態等 也會跟著變~
謝謝大大分享新手教程(對我這個嫩嫩新手幫助很多)
另外請幫我看看的各位大大先說聲謝謝(不過有人看嗎? )

点评

好漂亮~!  发表于 2012-8-14 08:59
有人看的。。。  发表于 2012-7-12 21:28
回复

使用道具 举报

梦石
0
星屑
5733
在线时间
72 小时
注册时间
2013-9-22
回帖
3
发表于 2014-1-1 16:07:45 | 显示全部楼层
       

点评

鄙视空白帖刷经验!@fux2 @prossstonly  发表于 2014-1-1 18:56

评分

参与人数 1星屑 -50 收起 理由
怪蜀黍 -50 塞糖

查看全部评分

回复

使用道具 举报

○赛

梦石
0
星屑
1254
在线时间
1276 小时
注册时间
2013-1-22
回帖
2078

贵宾

发表于 2014-1-1 19:00:49 | 显示全部楼层
    1  发表于 2014-1-1 16:07
       

鄙视刷分~@protosssonny @fux2 召唤版主消灭。

评分

参与人数 1星屑 -1 收起 理由
怪蜀黍 -1 请使用举报功能

查看全部评分

回复

使用道具 举报

梦石
0
星屑
15
在线时间
89 小时
注册时间
2009-7-8
回帖
11
发表于 2014-3-3 13:03:11 | 显示全部楼层
正好用上,多谢楼主
回复

使用道具 举报

梦石
0
星屑
50
在线时间
9 小时
注册时间
2014-3-21
回帖
5
发表于 2014-3-22 16:13:49 | 显示全部楼层
请问这里怎么改:
#--------------------------------------------------------------------------
  # ● 生成背景
  #--------------------------------------------------------------------------
  def create_background
    @background_sprite = Sprite.new
    @background_sprite.bitmap = SceneManager.background_bitmap
    @background_sprite.color.set(16, 16, 16, 128)
  end
回复

使用道具 举报

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

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部