找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 285|回复: 3

[教程] “如何在打开界面时实时模糊背景”的解决办法

[复制链接]
发表于 2026-7-24 19:39:46 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 烈林凤 于 2026-7-24 19:41 编辑

就在我发出上一篇帖子几小时后,突然得知了一个惊天消息!原来rp存在renpy.show_layer_at这样方便的函数!(归根结底,还是rp文档内容太多,没办法记住所有函数)))
文档:等效语句 — Ren'Py 中文文档
那么,这有什么用呢?
我们知道blur是一种变换特性,而renpy.show_layer_at可以直接将变换作用在图层上,那么我们就可以做到标题所说的功能

以下是代码:
[RenPy] 纯文本查看 复制代码
transform blur_screen_transform:
    blur 10

init -1 python:
    if "blur_screen" not in config.layers:
        config.layers.append("blur_screen")
        
    def blur_layer(if_bool:bool):
        if if_bool:
            renpy.show_layer_at(blur_screen_transform, layer='master')
            renpy.show_layer_at(blur_screen_transform, layer='blur_screen')
        else:
            renpy.show_layer_at(False, layer='master')
            renpy.show_layer_at(False, layer='blur_screen')

screen say(who, what):
    
    layer 'blur_screen'

[RenPy] 纯文本查看 复制代码
screen game_menu(title, scroll=None, yinitial=0.0, spacing=0):

    style_prefix "game_menu"

    on "show" action Function(blur_layer, True)
    on "hide" action Function(blur_layer, False)

    # if main_menu:
    #     add gui.main_menu_background
    # else:
    #     add gui.game_menu_background

首先我们需要先定义一个新的界面图层,专门用于我们需要模糊的图层,这里以对话界面(对话框的内容)作为演示,将对话界面的图层改为了blur_screen
之后定义一个函数,用布尔值判断是模糊还是取消模糊,写上两个renpy.show_layer_at,第一个参数填写事先定义好的变换样式,第二个参数填写需要模糊的图层,其中
master是在label中show、scene、call等方式显示的图片所使用的图层,blur_screen则是我们之前定义的图层
最后在需要模糊的地方使用这个函数,我这里用screen game_menu作为演示,当进入界面时使用,隐藏界面时关闭

实际原理就这么简单,难的是如何从文档中找到这个有用的函数)

评分

参与人数 1活力 +300 干货 +3 收起 理由
被诅咒的章鱼 + 300 + 3 居然还有这种方法,太强了!

查看全部评分

发表于 2026-7-24 19:56:27 | 显示全部楼层
嗯哼这是今天刚给某位群友提供的方法,文档里有很多无人问津但在某些场合有妙用的函数
回复 支持 抱歉

使用道具 举报

 楼主| 发表于 2026-7-25 09:27:24 | 显示全部楼层
千趣 发表于 2026-7-24 19:56
嗯哼这是今天刚给某位群友提供的方法,文档里有很多无人问津但在某些场合有妙用的函数 ...

太强了!
回复 支持 抱歉

使用道具 举报

发表于 2026-8-24 11:47:23 | 显示全部楼层
烈烈(喜)
回复 支持 抱歉

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-9-8 16:08 , Processed in 0.022770 second(s), 9 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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