using System.Collections; using AibisDream.Framework; using AibisDream.SaveSystem; using UnityEngine; namespace AibisDream { public class SpriteActor : AbsActor { private string _stateName = "Idle"; protected override void InitInternal() { base.InitInternal(); _actorType = ActorType.Sprite; ChangeState("Idle"); } public override void ChangeState(string stateName) { _stateName = string.IsNullOrWhiteSpace(stateName) ? "Idle" : stateName; spriteRenderer.sprite = ResourceKit.LoadAssetSync($"Sprite/{ActorName}[{_stateName}]"); } public override ActorEntrySnapshotDto CaptureEntry() { var entry = new ActorEntrySnapshotDto(); FillBaseEntry(entry); entry.stateName = _stateName; return entry; } public override IEnumerator ApplyEntryAsync(ActorEntrySnapshotDto entry) { ApplyAlphaFromEntry(entry); if (!string.IsNullOrEmpty(entry.stateName)) { ChangeState(entry.stateName); } else { ChangeState("Idle"); } yield break; } } }