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