马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
本帖最后由 Maz马 于 2025-8-29 06:27 编辑
话不多说,其实很简单
思路:
首先回放指令Replay()会创建一个新的上下文,因此,在回放中的所有变量变更都不会影响当前游戏
而回放一般都会以EndReplay()或renpy.end_replay()函数作为结尾
那么我们只要用持久化数据顶掉回放时的数据,并在结尾时把数据拷贝到当前存档就可以了
实现:
[RenPy] 纯文本查看 复制代码 #定义一个持久化的字典来传递
default persistent.scope = {}
#假设这是你需要改变的变量
default money = 100
default item01 = 0
default item02 = 0
default item03 = 0
init python:
# 写一个函数把原生的结束回放函数封装,并把需要在回放中影响当前存档的变量拷贝回来
def new_end_replay():
renpy.end_replay()
#由于回放中对这个字典是引用的,我们直接读取字典值就可以了
money = persistent.scope["money"]
#假设这是你的画廊
screen gallery():
#在每次进入画廊时,给这个传递字典赋值
#键名必须是变量名的字符串,这个是原生的接口
$ persistent.scope = {
"money":money,
"item01":item01,
"item02":item02,
"item03":item03,}
#回放时向读取变量的参数scope传入你的持久化字典
textbutton "测试" action Replay("xxxx",scope=persistent.scope)
#假如使用界面行为EndReplay()来结束回放,则使用你的函数来顶替掉它
textbutton "结束回放" action Function(new_end_replay)
#此时回放中将会使用字典的值作为回放的变量
label xxxx:
show screen gallery
"无论你在回放中,还是游戏中,都会失去10块"
$ money -= 10
#结束回放renpy.end_replay()用你的函数顶替
$ new_end_replay()
#查看我写的更多屎
时间切片的帧动画动态可视组件
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
粉身碎骨浑不怕,要留答辩在人间
|