马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
本帖最后由 Maz马 于 2025-10-13 18:20 编辑
前言:
这是个教学贴,而并非复制即用的
适用于会renpy的screen,button语法,但是不会python
和原生的Gallery不同,Gallery是像幻灯片一样播放图片,以下的方法更像是“剧情节选”
正文:
从本质去思考,这只是一个按钮,点击下去就开始回放剧情节选,不是吗?
(如果是幻灯片,只需要做一个只有图片的label就一样了)
为此我觉得对新人来说,button会比Gallery更简单,更直观
(如果你使用Gallery能够跑通的话,那么也完全没有问题,那是更高级的方式)
让我们看看一个回放按钮的写法:
[RenPy] 纯文本查看 复制代码 #这个局内使用,表示当前存档中这个回放是否被解锁
#如果你需要在主流程判断这个事件是否发生过,那么你应该使用这个非持久化的变量
default cg_01 = 0
#这个局外使用,表示全局游戏中这个回放是否被解锁
default persistent.cg_01 = 0
screen xxxx():
#图片按钮
imagebutton:
#当持久化变量未被解锁时,使用解锁前的图片,且不做任何事
if not persistent.cg_01:
idle "解锁前的图片"
#否则,使用CG图片,且点击后进行回放
else:
idle "CG图片"
action Replay("sj_01")#回放对应的label
label sj_01:
#假设这就是你要回放的剧情节选
"你好"
#结束回放的地方
$ renpy.end_replay()
#在你的剧情节选后面把你设置对应变量打开
$ cg_01 = 1
$ persistent.cg_01 = 1
return
这就是一个最基本的结构,通过变量分支来显示图片,点击按钮则回放对应的label。
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
#使用回放行为的图片按钮
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#参照上方MGallery00,也就是画廊第0页的写法
screen MGallery02():
pass#参照上方MGallery00,也就是画廊第0页的写法
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
粉身碎骨浑不怕,要留答辩在人间
|