Files
ichni_Official/Assets/Scripts/NewStorySystem/Dialogue/IPortraitRenderer.cs
SoulliesOfficial 7b7d069b84 StorySystem
2026-07-07 01:28:27 -04:00

60 lines
2.3 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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);
}
}