StorySystem

This commit is contained in:
SoulliesOfficial
2026-07-07 01:28:27 -04:00
parent d031afd075
commit 7b7d069b84
105 changed files with 4852 additions and 2734 deletions

View File

@@ -0,0 +1,59 @@
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);
}
}