找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 47|回复: 0

[教程] 新人难题-画廊结构解答

[复制链接]
发表于 3 天前 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

×
本帖最后由 Maz马 于 2025-9-5 19:03 编辑

首先,这是个教学贴,而并非复制即用的
本来画廊的教程就非常多了,我对写这个东西完全没有兴趣
但因为很多新人问,抄过来的代码又各有各的结构
回答,对于py基础不太懂,调试,又不太会

会写button又不会写Gallery
从本质去思考,这只是一个按钮,点击下去就开始回放剧情节选,不是吗?


为此我觉得对新人来说,Gallery真的不是一个好的选择
出点什么问题自己没法纠错,问人又难以解释...上手帮吧,一个问题却要到处缝补
与其这样,不如用最简单的方法去解决问题

直接用手动维护button的方式来做画廊
如果对screen和button有基础的了解,这真的简单的不能再简单了...
Gallery就是批量管理了回放的按钮,省去动态化和部分变量,因此用button来做也压根没有问题
而且使用button也可以去做一些更个性化的雕花,比如边框,标题,动效

[RenPy] 纯文本查看 复制代码
#假设这是你的CG图
image cg_01:
    "#00ffe4"
    xysize(1920,1080)

#假设这是你未解锁的图片
image cg_lock:
    "#838383"
    xysize(1920,1080)

#由于CG都是全屏的,因此我们使用一个变换来使画廊的按钮变小
transform mgallery_zoom():
    zoom 0.25

#设置变量

#用来控制显示哪一页的变量
default gallery_page = 0

#这个局内使用,表示当前存档中这个回放是否被解锁
default cg_01 = 0
#这个局外使用,表示全局游戏中这个回放是否被解锁
default persistent.cg_01 = 0


#主画廊菜单控制器,只控制显示的页数
screen MGallery():
    #表示这个界面在主菜单使用,以确保替换掉相同tag的screen
    tag menu
    if gallery_page == 0:
        use MGallery00()
    if gallery_page == 1:
        use MGallery01()
    if gallery_page == 2:
        use MGallery02()
    #这里需要你按照自己的需要手动维护,就是根据变量显示不同的页面而已
    hbox:
        textbutton "<" action SetVariable("gallery_page",gallery_page-1)#给按钮加上变更变量的行为
        textbutton "0" action SetVariable("gallery_page",0)
        textbutton "1" action SetVariable("gallery_page",1)
        textbutton "2" action SetVariable("gallery_page",2)
        textbutton ">" action SetVariable("gallery_page",gallery_page+1)

#单页的画廊,可以直接写在画廊内部,但为了方便管理,因此使用use
screen MGallery00():
    #表示这个界面在主菜单使用,以确保替换掉相同tag的screen
    tag menu
    #Gallery实际就是封装好的,自动化的定义按钮的一种方法
    #直接手动使用图片按钮也未尝不可
    imagebutton:
        #当持久化变量未被解锁时,使用解锁前的图片,且不做任何事
        if not persistent.cg_01:
            idle "cg_lock" at mgallery_zoom
        #否则,使用CG图片,且点击后进行回放
        else:
            idle "cg_01" at mgallery_zoom
            action Replay("sj_01")#回放行为
    #后面就是一个个的补按钮,用hbox,vbox之类的容器进行布局

screen MGallery01():
    pass#爱怎么补按钮就怎么补按钮

screen MGallery02():
    pass#爱怎么补按钮就怎么补按钮

label sj_01:
    #假设这就是你要回放的剧情节选
    "你好"
    #结束回放的地方
    $ renpy.end_replay()
    #在你的剧情节选后面把你设置对应变量打开
    $ cg_01 = 1
    $ persistent.cg_01 = 1
    return


#查看我写的更多屎

时间切片的帧动画动态可视组件
https://www.renpy.cn/forum.php?mod=viewthread&tid=1740

在回放中影响当前游戏存档数据的方法
https://www.renpy.cn/forum.php?mod=viewthread&tid=1739

她的心里话!隐藏文本!
https://www.renpy.cn/forum.php?mod=viewthread&tid=1713

能力雷达图
https://www.renpy.cn/forum.php?mod=viewthread&tid=1719

暴学CDD的十四天/附虚拟摇杆
https://www.renpy.cn/forum.php?mod=viewthread&tid=1675

简单rpg地图移动
https://www.renpy.cn/forum.php?mod=viewthread&tid=1652

摇骰子小游戏
https://www.renpy.cn/forum.php?mod=viewthread&tid=1653

猜球盅小游戏
https://www.renpy.cn/forum.php?mod=viewthread&tid=1574

FontGroup() 游戏里全局使用两种字体的方法
https://www.renpy.cn/forum.php?mod=viewthread&tid=1491

粉身碎骨浑不怕,要留答辩在人间



评分

参与人数 1活力 +300 干货 +3 收起 理由
烈林凤 + 300 + 3 感谢分享!

查看全部评分

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|RenPy中文空间 ( 苏ICP备17067825号|苏公网安备 32092302000068号 )

GMT+8, 2025-9-8 03:11 , Processed in 0.051228 second(s), 25 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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