找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 240|回复: 0

[教程] 【功能组件】多角色、多数据管理技巧

[复制链接]
发表于 2026-5-18 00:05:55 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 Maz马 于 2026-5-18 01:23 编辑

最开始是和 全随机游戏核心 写在一起的
但为了解耦,让单个组件更加模块化一点,使用、学习起来更轻松一点
所以把混杂的东西单独切出来
[RenPy] 纯文本查看 复制代码
# 多数据管理技巧:
init python:
    # 批量注册角色
    def Auto_set_char(start=1, end=100, prefix="角色"):
        for i in range(start, end + 1):
            name = f"{prefix}{i}"
            store._data_char[name] = Character(name)
        return
    # 自定义列表批量注册
    def List_set_char(names_list):
        for name in names_list:
            store._data_char[name] = Character(name)
        return

default _data_char = {}                                    # 存储角色数据的注册表单
default _current_char = None                               # 临时读取角色数据的容器
default _cc = Character("_current_char.name",dynamic=True) # 动态读取容器的实际数据

# 多角色示例
label DATA_test:
    # 实际数据存储在注册表,用调取数据的方式,使用原生角色作为UI接口
    $ _data_char["角色1"] = Character("角色1")
    $ _data_char["角色2"] = Character("角色2")
    $ _data_char["角色3"] = Character("角色3")
    $ _data_char["角色4"] = Character("角色4")
    # 管理数据只需要管理注册表,不需要每次都新建变量或查找变量,只需要重复查表与提取
    $ _current_char = _data_char["角色1"]
    _cc "我是角色[_current_char.name]"
    _cc "我是角色[_cc]"
    # 在对话,脚本编写时,也不需要使用多个变量,而是动态计算,甚至也便捷了多语言TL文件的修改
    $ _current_char = _data_char["角色4"]
    _cc "我是角色[_current_char.name]"
    _cc "我是角色[_cc]"
    # 可以使用一组函数来对注册表封装,和自动处理
    $ Auto_set_char(start=1, end=100, prefix="路人角色")
    $ _current_char = _data_char["路人角色100"]
    _cc "我是角色[_current_char.name]"
    # 也可以通过函数 使用数据、表格、json等方式批量录入
    $ List_set_char(["勇者", "法师", "刺客"])
    $ _current_char = _data_char["刺客"]
    _cc "我是角色[_current_char.name]"
    return


#点击头像 查看我写的更多屎
粉身碎骨浑不怕,要留答辩在人间




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

本版积分规则

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

GMT+8, 2026-6-15 00:09 , Processed in 0.026523 second(s), 6 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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