50 lines
1.3 KiB
C#
50 lines
1.3 KiB
C#
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>($"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;
|
|
}
|
|
}
|
|
}
|