找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 28|回复: 3

[教程] renpy人物对话自动高亮/变暗

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

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

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

×
目前人物对话高亮/变暗的主流方法是使用ConditionSwitch,缺点是需要给每个图像都写一遍,下午在玩植物大战僵尸的时候想出了一个比较方便的方法
[RenPy] 纯文本查看 复制代码
# 这里是需要应用的自动高亮/变暗的tag名
define auto_highlight_characters = ['linke', 'shenjian', 'zhongshan']
# 当前说话人物
default current_speaking = None

transform auto_highlight(name):
    function partial(auto_highlight_transform, name=name)

init python:

    from functools import partial

    def auto_highlight_callback(event, name, interact=True, **kwargs):
        global current_speaking

        if not interact:
            return

        if event == 'begin':
            current_speaking = name

    def auto_highlight_transform(trans, st, at, name):
        global current_speaking

        if name == current_speaking:
            trans.matrixcolor = None # 当前人物说话的效果
        else:
            trans.matrixcolor = SaturationMatrix(0.6) * BrightnessMatrix(-0.2) # 其他人说话的效果

        return 0 # 返回0表示尽快调用

    for name in auto_highlight_characters:
        config.tag_transform[name] = auto_highlight(name)

# 别忘了把旁白和name_only角色加上
define narrator = Character(None, callback=auto_highlight_callback, cb_name=None)
define name_only = Character(None, callback=auto_highlight_callback, cb_name=None)

# 这里的cb_name是图像的tag,也就是说,如果你的人物定义有image这一项,那么cb_name的入参应该和image相同
define lk = Character('林恪', callback=auto_highlight_callback, cb_name='linke')
define sj = Character('沈健', callback=auto_highlight_callback, cb_name='shenjian')
define zs = Character('钟山', callback=auto_highlight_callback, cb_name='zhongshan')



这个方法有一半的内容和ConditionSwitch是一样的,只不过我们使用transform的判断替代了原本CS的判断,只需要添加图像tag就好了,但是注意,使用这个方法的前提是,展示图像的时候不带at特性,因为config.tag_transform只有不带at的时候才能生效

评分

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

查看全部评分

发表于 2 小时前 | 显示全部楼层
懂了,玩植物大战僵尸就能成为renpy糕手)
回复 支持 抱歉

使用道具 举报

发表于 2 小时前 | 显示全部楼层
还有PVZ暗广
回复 支持 抱歉

使用道具 举报

 楼主| 发表于 1 小时前 | 显示全部楼层

并非暗广(
回复 支持 抱歉

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-4-9 20:49 , Processed in 0.024052 second(s), 9 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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