60 lines
2.3 KiB
C#
60 lines
2.3 KiB
C#
using UnityEngine;
|
||
|
||
namespace Ichni.Story.Dialogue
|
||
{
|
||
/// <summary>
|
||
/// 立绘渲染器抽象接口。所有立绘渲染实现(Sprite / Live2D / Spine)均须实现此接口,
|
||
/// 使 <see cref="VNPortraitStage"/> 和 Yarn 命令层无需感知底层渲染细节。
|
||
/// </summary>
|
||
public interface IPortraitRenderer
|
||
{
|
||
/// <summary>此渲染器在舞台上占用的 RectTransform(用于位置操控)。</summary>
|
||
RectTransform RectTransform { get; }
|
||
|
||
/// <summary>
|
||
/// 以指定角色数据和情绪名显示立绘。若角色已在台上则更新情绪。
|
||
/// </summary>
|
||
void Show(CharacterData character, string emotion);
|
||
|
||
/// <summary>隐藏立绘(不销毁对象,留存以便复用)。</summary>
|
||
void Hide();
|
||
|
||
/// <summary>切换当前情绪(角色数据不变)。</summary>
|
||
void SetEmotion(string emotion);
|
||
|
||
/// <summary>
|
||
/// 将立绘的 anchoredPosition 设为指定坐标(即时,无动画)。
|
||
/// </summary>
|
||
/// <param name="anchoredPos">目标 anchoredPosition(画布空间,像素单位)。</param>
|
||
void SetPosition(Vector2 anchoredPos);
|
||
|
||
/// <summary>
|
||
/// 控制说话者高亮状态:说话者 alpha = 1.0,旁观者 alpha = 0.7(可由实现自行定义)。
|
||
/// </summary>
|
||
void SetActiveVisual(bool isSpeaking);
|
||
|
||
/// <summary>
|
||
/// 平滑移动到目标位置。
|
||
/// </summary>
|
||
/// <param name="anchoredPos">目标像素坐标</param>
|
||
/// <param name="duration">持续时间</param>
|
||
void MoveTo(Vector2 anchoredPos, float duration);
|
||
|
||
/// <summary>
|
||
/// 原地跳跃动画。
|
||
/// </summary>
|
||
/// <param name="power">跳跃力度(高度)</param>
|
||
/// <param name="numJumps">跳跃次数</param>
|
||
/// <param name="duration">持续时间</param>
|
||
void Jump(float power, int numJumps, float duration);
|
||
|
||
/// <summary>
|
||
/// 左右震动动画。
|
||
/// </summary>
|
||
/// <param name="duration">持续时间</param>
|
||
/// <param name="strength">震动力度(像素范围)</param>
|
||
/// <param name="vibrato">震动频率</param>
|
||
void Shake(float duration, float strength, int vibrato);
|
||
}
|
||
}
|