# 过渡效果

当使用@back@char 命令改变背景和人物元素的时候,或是@startTrans@finishTrans 命令场景(scene)切换时,你可以定义使用的过渡效果。比如,如下示例会使用"DropFade"效果过渡到 "River" 背景:

@back River.DropFade

当未定义特效时,交叉过渡的效果会被默认使用。

你也可以定义特效时长(单位:秒),用time参数:

@back River.DropFade time:1.5

上述命令,会使用1.5秒的"DropFade"效果过渡到 "River" 背景。默认的time参数值为0.35秒。

如果你想在执行过渡效果后立即跳到下一个命令(而不等待效果的持续时间),可以将wait参数设置为false。例如:

@back River.Ripple time:1.5 wait:false
@bgm PianoTheme

— 在过渡过程中,“ PianoTheme”背景音乐将立即开始播放,并且不会延迟1.5秒。

一些过渡效果还支持其他参数,您可以使用params参数进行控制:

@back River.Ripple params:10,5,0.02

— 将波纹效果的频率设置为10,速度设置为5,幅度设置为0.02。如果params未设置 ,则将使用默认参数。

如果要修改特定的参数,可以跳过其他参数,它们将使用默认值:

@back River.Ripple params:,,0.02

所有过渡参数均为decimal类型。

上面的示例也适用于人物,只需为其提供独立transition参数:

@char CharID.Appearance transition:TransitionType params:...

您可以在下面的文档中找到可用的过渡效果及其参数和默认值。

# 带状漩涡

参数

名字 默认值
Twist amount 5
Frequency 10

示例

; 按默认值使用过渡效果。
@back Appearance.BandedSwirl

; 按默认值使用扭曲值(twist amount),但是低频率(frequency)。
@back Appearance.BandedSwirl params:,2.5

# 百叶窗

参数

名字 默认值
Count 6

示例

; 按默认值使用过渡效果。
@back Appearance.Blinds

; 将默认参数扇叶数量设置为30而非默认的6.
@back Appearance.Blinds params:30

# 中心渐入

参数

名字 默认值
Fuzzy amount 0.25

示例

; 按默认值使用过渡效果。
@back Appearance.CircleReveal

; 使用高模糊量(Fuzzy amount)的过渡效果。
@back Appearance.CircleReveal params:3.33

# 中心扭曲渐入

示例

; 按默认值使用过渡效果。
@back Appearance.CircleStretch

# 云状渐入

示例

; 按默认值使用过渡效果。
@back Appearance.CloudReveal

# 淡入淡出

示例

; 按默认值使用过渡效果。
@back Appearance.Crossfade

# 瓦解渐入

示例

; 按默认值使用过渡效果。
@back Appearance.Crumble

# 溶解

参数

名字 默认值
Step 99999

示例

; 按默认值使用过渡效果。
@back Appearance.Dissolve

; 过渡效果设置为低步进。
@back Appearance.Dissolve params:100

# 淡入淡出

示例

; 按默认值使用过渡效果。
@back Appearance.DropFade

# 斜角渐入

参数

名字 默认值
Fuzzy amount 0.25
Line Normal X 0.5
Line Normal Y 0.5

示例

; 按默认值使用过渡效果。
@back Appearance.LineReveal

; 垂直方向直角渐入。
@back Appearance.LineReveal params:,0,1

# 像素化

示例

; 按默认值使用过渡效果。
@back Appearance.Pixelate

# 径向模糊

示例

; 按默认值使用过渡效果。
@back Appearance.RadialBlur

# 径向摆动

示例

; 按默认值使用过渡效果。
@back Appearance.RadialWiggle

# 中心不规则显示

示例

; 按默认值使用过渡效果。
@back Appearance.RandomCircleReveal

# 波纹

参数

名字 默认值
Frequency 20
Speed 10
Amplitude 0.5

示例

; 按默认值使用过渡效果。
@back Appearance.Ripple

; 将过渡效果调整为高频高振幅。
@back Appearance.Ripple params:45,,1.1

# 旋转渐入

示例

; 按默认值使用过渡效果。
@back Appearance.RotateCrumble

# 高亮渐入

示例

; 按默认值使用过渡效果。
@back Appearance.Saturate

# 收缩

参数

名字 默认值
Speed 200

示例

; 按默认值使用过渡效果。
@back Appearance.Shrink

; 低速应用到过渡效果。
@back Appearance.Shrink params:50

# 滑入

参数

名字 默认值
Slide amount 1

示例

; 按默认值使用过渡效果。
@back Appearance.SlideIn

# 漩涡网格

参数

名字 默认值
Twist amount 15
Cell count 10

示例

; 按默认值使用过渡效果。
@back Appearance.SwirlGrid

; 过渡效果使用高扭曲度,和低单元数量。
@back Appearance.SwirlGrid params:30,4

# 漩涡过渡

参数

名字 默认值
Twist amount 15

示例

; 按默认值使用过渡效果。
@back Appearance.Swirl

; 过渡效果使用高扭曲度。
@back Appearance.Swirl params:25

# 水状过渡

示例

; 按默认值使用过渡效果。
@back Appearance.Water

# 瀑布

示例

; 按默认值使用过渡效果。
@back Appearance.Waterfall

# 规则水波

参数

名字 默认值
Magnitude 0.1
Phase 14
Frequency 20

示例

; 按默认值使用过渡效果。
@back Appearance.Wave

; 过渡效果使用大水波,和低频。
@back Appearance.Wave params:0.75,,5

# 自定义过渡效果

# 溶解蒙版

您可以基于溶解蒙版纹理进行自定义过渡。溶解蒙版是灰度贴图,其中颜色定义像素何时过渡到目标纹理。例如,以下螺旋形方块溶解蒙版:

— 右上角的黑色正方形表示在过渡开始时应在此处显示过渡目标,而中间的纯白色正方形将在末尾过渡。

要使用自定义过渡,使用 Custom 过渡模式并通过 dissolve 参数设置蒙版贴图的路径(相对于项目“ Resources”文件夹),如下:

@back Appearance.Custom dissolve:Textures/Spiral

请查看以下视频以了解用法示例。

# 自定义着色器

可以通过自定义着色器 添加完全自定义的过渡效果。 It's possible to add a completely custom transition effect via a custom actor shader.

警告

该板块需要Unity中的图形学编程技能。我们不提供有关编写自定义着色器的任何支持或教程。请自行参阅技术支持页面以获取更多信息。

创建一个新的着色器,并将其分配给要使用新的自定义过渡效果的元素;参考自定义元素着色器 以获取更多关于如何创建绑定自定义元素着色器的信息。

在脚本命令中指定过渡名称后,元素使用的具有相同着色器关键字 (前缀NANINOVEL_TRANSITION_)的名字的材质将会被启用。

要将自己的过渡添加到自定义元素着色器,请使用 multi_compile 指令,如下:

#pragma multi_compile _ NANINOVEL_TRANSITION_MYCUSTOM1 NANINOVEL_TRANSITION_MYCUSTOM2

— 将添加 MyCustom1MyCustom2 过渡效果。

然后,可以使用条件判断基于已启用的transition关键字来选择特定的渲染方式。当重新使用内置的元素着色器时,可以使用 ApplyTransitionEffect 方法来实现:

fixed4 ApplyTransitionEffect(in sampler2D mainTex, in float2 mainUV, in sampler2D transitionTex, in float2 transitionUV, in float progress, in float4 params, in float2 randomSeed, in sampler2D cloudsTex, in sampler2D customTex)
{
    const fixed4 CLIP_COLOR = fixed4(0, 0, 0, 0);
    fixed4 mainColor = Tex2DClip01(mainTex, mainUV, CLIP_COLOR);
    fixed4 transitionColor = Tex2DClip01(transitionTex, transitionUV, CLIP_COLOR);

    #ifdef NANINOVEL_TRANSITION_MYCUSTOM1 // MyCustom1 transition.
    return transitionUV.x > progress ? mainColor : lerp(mainColor / progress * .1, transitionColor, progress);
    #endif

    #ifdef NANINOVEL_TRANSITION_MYCUSTOM2 // MyCustom2 transition.
    return lerp(mainColor * (1.0 - progress), transitionColor * progress, progress);
    #endif

    // When no transition keywords enabled default to crossfade.
    return lerp(mainColor, transitionColor, progress);
}

然后,你就能够以与内置过渡相同的方式调用添加的过渡,如下:

@back Snow.MyCustom1
@back River.MyCustom2
最近更新时间: December 19, 2020