找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 70|回复: 0

[教程] 在回放中影响当前游戏存档数据的方法

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

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

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

×
本帖最后由 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

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




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

本版积分规则

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

GMT+8, 2025-9-1 12:55 , Processed in 0.057768 second(s), 24 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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