找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 19|回复: 1

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

[复制链接]
发表于 昨天 19:39 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 烈林凤 于 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作为演示,当进入界面时使用,隐藏界面时关闭

实际原理就这么简单,难的是如何从文档中找到这个有用的函数)
发表于 昨天 19:56 | 显示全部楼层
嗯哼这是今天刚给某位群友提供的方法,文档里有很多无人问津但在某些场合有妙用的函数
回复 支持 抱歉

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-7-25 02:20 , Processed in 0.016162 second(s), 6 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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