设为首页收藏本站同能贴吧 切换语言 繁体中文
开启辅助访问 切换到窄版
返回列表
+ 发新帖
查看: 614|回复: 0

[转载发布] [教程]RMMV脚本教程——菜单美化(二)

[复制链接]
累计送礼:
0 个
累计收礼:
1 个
  • TA的每日心情
    开心
    昨天 03:27
  • 签到天数: 222 天

    连续签到: 1 天

    [LV.7]常住居民III

    9102

    主题

    893

    回帖

    7万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    VIP
    7
    卡币
    64916
    OK点
    16
    推广点
    0
    同能卷
    50
    积分
    74941

    灌水之王

    发表于 2024-11-22 00:47:04 | 显示全部楼层 |阅读模式

    写在前面

    时隔不到一年半,高考完的我终于决定继续研究MV的脚本,然后写教程啦…
    之前的教程(下面参考资料有文章链接)发布在Project1(原6R)论坛上,之前的坑还是会慢慢填完的,现在再开个新坑!
    这次来美化一下菜单!
    首先放一下先行图:


    上一篇教程的传送门:  


    ps:
    推荐去我的博客看,以获得最佳观看体验:RMMV脚本教程——菜单美化(二)




    注意事项


    正文

    上次说到哪了…
    对,这次我们要来改造右边显示角色简要信息的窗口了!

    美化角色状态窗口

    首先,我们还是要分析这个窗口是在哪里定义的。
    在Scene_Menu中搜索“状态”,发现如下脚本:


    看到预约脸图(这什么鬼才翻译…果然是机翻…),菜单上显示脸图的地方也就是显示角色基本信息、用来选择角色的窗口了…

    因此我们打开Window_MenuStatus,我们先去看看预约脸图到底是个什么鬼东西…
    最后一直搜到他的父类的父类Window_Base,才搜到这个方法:


    然而没看出来什么…
    不过看起来本质是对每一个成员都来一遍ImageManager.reserveFace函数。
    然后再去rpg_managers文件夹下的ImageManager.js中搜索,,,
    算了,我直接说出来吧…
    这里说的预约或者预订,大概就是预加载的意思,MV的机制和VA中有些不太一样,VA中是如果图片在Cache中找不到,就去加载文件,而MV中最好预加载一下,然后使用的时候才能保证能正常显示,所以就有了一系列reserve函数。
    这里不理解也没多大关系,毕竟对于我们这篇教程来说也用不到这个东西…
    回归正题,既然我们已经打开了Window_MenuStatus,那么就要看看这里面是怎么描绘窗口内容的了。
    还记得在我一年之前的教程里面绘制角色脸图的方法吗?没看过的同学可以去参考资料那里去找链接,或者我的签名档。
    没错,就是drawActorFace方法!因此我们搜索这个方法名就能知道是怎么绘制的了。
    搜到的结果:

    我们看到这里绘制了角色的脸图,但是我们注意到这个函数有参数index,而且这个函数调用一次只能够在rect.x + 1, rect.y +1显示一个脸图,所以说一定是某个函数调用了这个函数很多次,才绘制出来所有角色的脸图。他是如何调用了这个函数多次,index又是什么含义呢?我们再以drawItemImage为关键字搜索:

    结果发现这个函数只是把3个函数放在了一起,并不能看出来index的含义,再次搜索drawItem,发现只能搜到定义,却不能搜到其他地方有这个函数?

    (黑人问号…)这…怎么会没有定义?
    重点来了!!!
    当我们在某个类(Window_MenuStatus)中搜索不到一个有定义却没有引用的函数(drawItem)时,我们珂以尝试去他的父类、父类的父类、甚至是他的祖宗类(XD)中去搜索,理论上说一般能够搜到(其实更简单的方法是直接在mv的js文件夹下的rpg_windows.js中搜索,但是没有中文注释)。
    我们去Window_Selectable搜索,发现一下连续的两处结果:

    其实,我们只需修改rect.y那一行为

    就不用加if那行了。

    原理是第一行的角色的Math.floor(index /maxCols)结果为0,第二行的角色的Math.floor(index / maxCols)结果为1,所以只有第二行角色的rect.y增加了rect.height * 2。
    现在我们运行一下游戏…感觉哪里有些不对——选项的高度太高了…
    解决的方法是增加一页窗口的可见行数,在Window_MenuStatus的drawItem上面,我们发现了以下函数:

    我们只要把他的行数改7即可。这里需要注意的是,记得将rect.y改为


    如果你是用的if,那么将if那行改为

    效果是一样的。
    最后运行下看下结果。


    到这里,我们就写完了选项处理的部分,那么这期教程就写道这里吧(貌似只写完了上次预告的1/3)。

    后记

    这篇教程没完成上次预告的内容…
    着实抱歉…
    下期教程,基本上就能完工啦!
    效果和预览图上就会一样了。
    感谢大家的支持!





                本帖来自P1论坛作者xjzsq,因Project1站服务器在国外有时候访问缓慢不方便作者交流学习,经联系P1站长fux2同意署名转载一起分享游戏制作经验,共同为国内独立游戏作者共同创造良好交流环境,原文地址:https://rpg.blue/forum.php?mod=viewthread&tid=477962  若有侵权,发帖作者可联系底部站长QQ在线咨询功能删除,谢谢。

    帖子地址: 

    天天去同能,天天有童年!
    回复 送礼论坛版权

    使用道具 举报

    文明发言,和谐互动
    文明发言,和谐互动
    高级模式
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    简体中文
    繁體中文
    English(英语)
    日本語(日语)
    Deutsch(德语)
    Русский язык(俄语)
    بالعربية(阿拉伯语)
    Türkçe(土耳其语)
    Português(葡萄牙语)
    ภาษาไทย(泰国语)
    한어(朝鲜语/韩语)
    Français(法语)
    关闭

    幸运抽奖

    社区每日抽奖来袭,快来试试你是欧皇还是非酋~

    立即查看

    聊天机器人
    Loading...

    QQ|Archiver|手机版|小黑屋|同能RPG制作大师 ( 沪ICP备12027754号-3 )

    GMT+8, 2026-10-22 04:56 , Processed in 0.100634 second(s), 55 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2020, Tencent Cloud.

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