场景和角色管理替换
This commit is contained in:
@@ -0,0 +1,49 @@
|
||||
using System;
|
||||
using System.Linq;
|
||||
using UnityEngine;
|
||||
|
||||
namespace AibisDream
|
||||
{
|
||||
[RequireComponent(typeof(SpriteRenderer))]
|
||||
public class SpriteScenePart : AbsScenePart
|
||||
{
|
||||
[SerializeField] private SpritePartAsset[] spritePartAssets;
|
||||
private SpriteRenderer _spriteRenderer;
|
||||
|
||||
public override void Init(TimesOfDay time, Weather weather)
|
||||
{
|
||||
_spriteRenderer = GetComponent<SpriteRenderer>();
|
||||
|
||||
curWeather = weather;
|
||||
OnTimeChange(time);
|
||||
}
|
||||
|
||||
public override void OnTimeChange(TimesOfDay time)
|
||||
{
|
||||
curTime = time;
|
||||
|
||||
var timeArray = spritePartAssets.Where(item => item.time == time).ToArray();
|
||||
if (timeArray.Length == 0) return;
|
||||
var res = timeArray.DefaultIfEmpty(timeArray[0]).First(item => item.weather == curWeather);
|
||||
_spriteRenderer.sprite = res.sprite;
|
||||
}
|
||||
|
||||
public override void OnWeatherChange(Weather weather)
|
||||
{
|
||||
curWeather = weather;
|
||||
|
||||
var weatherArray = spritePartAssets.Where(item => item.weather == weather).ToArray();
|
||||
if (weatherArray.Length == 0) return;
|
||||
var res = weatherArray.DefaultIfEmpty(weatherArray[0]).First(item => item.time == curTime);
|
||||
_spriteRenderer.sprite = res.sprite;
|
||||
}
|
||||
}
|
||||
|
||||
[Serializable]
|
||||
public struct SpritePartAsset
|
||||
{
|
||||
public TimesOfDay time;
|
||||
public Weather weather;
|
||||
public Sprite sprite;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user