refactor: 移除废弃的 TimelineManager 和 MonoCenter
This commit is contained in:
@@ -1,58 +0,0 @@
|
||||
using System;
|
||||
using UnityEngine;
|
||||
|
||||
namespace AibisDream.Framework
|
||||
{
|
||||
public class MonoCenter : MonoBehaviour
|
||||
{
|
||||
public static event Action OnUpdate;
|
||||
|
||||
public static MonoCenter Mono;
|
||||
private static IOCContainer _iocContainer;
|
||||
|
||||
private void Awake()
|
||||
{
|
||||
if (Mono)
|
||||
Destroy(Mono.gameObject);
|
||||
else Mono = this;
|
||||
|
||||
InitKits();
|
||||
}
|
||||
|
||||
private void InitKits()
|
||||
{
|
||||
_iocContainer ??= new IOCContainer();
|
||||
// 在这里添加相应的工具
|
||||
Register(new TransTest());
|
||||
}
|
||||
|
||||
private void Register<T>(T kit) where T : IMonoKit
|
||||
{
|
||||
_iocContainer.Register(kit);
|
||||
OnUpdate += kit.OnUpdate;
|
||||
}
|
||||
|
||||
private void Unregister<T>() where T : class, IMonoKit
|
||||
{
|
||||
var kit = _iocContainer.Unregister<T>();
|
||||
OnUpdate -= kit.OnUpdate;
|
||||
}
|
||||
|
||||
private void Update()
|
||||
{
|
||||
OnUpdate?.Invoke();
|
||||
}
|
||||
}
|
||||
|
||||
public class TransTest : IMonoKit
|
||||
{
|
||||
public void OnUpdate()
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
public interface IMonoKit
|
||||
{
|
||||
void OnUpdate();
|
||||
}
|
||||
}
|
||||
@@ -1,11 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 93f180e6eb06c9f40a52e2bba277fc6e
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -1,8 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 81a3c7f5c3edcc94e83bef49a64c7183
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -1,133 +0,0 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
using UnityEngine.Playables;
|
||||
|
||||
public class TimelineManager : MonoBehaviour
|
||||
{
|
||||
public static TimelineManager Instance { get; private set; }
|
||||
|
||||
// 使用字典来管理多个PlayableDirector
|
||||
private Dictionary<string, PlayableDirector> directors = new Dictionary<string, PlayableDirector>();
|
||||
|
||||
private void Awake()
|
||||
{
|
||||
if (Instance == null)
|
||||
{
|
||||
Instance = this;
|
||||
DontDestroyOnLoad(gameObject); // 不销毁
|
||||
}
|
||||
else
|
||||
{
|
||||
Destroy(gameObject);
|
||||
return;
|
||||
}
|
||||
|
||||
// 自动注册所有子对象中的PlayableDirector
|
||||
RegisterAllDirectors();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 自动注册所有子对象中的PlayableDirector
|
||||
/// </summary>
|
||||
private void RegisterAllDirectors()
|
||||
{
|
||||
var allDirectors = GetComponentsInChildren<PlayableDirector>();
|
||||
foreach (var director in allDirectors)
|
||||
{
|
||||
if (director.playableAsset != null)
|
||||
{
|
||||
RegisterDirector(director.playableAsset.name, director);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 注册PlayableDirector
|
||||
/// </summary>
|
||||
/// <param name="name">Timeline的名称</param>
|
||||
/// <param name="director">PlayableDirector实例</param>
|
||||
public void RegisterDirector(string name, PlayableDirector director)
|
||||
{
|
||||
if (!directors.ContainsKey(name))
|
||||
{
|
||||
directors.Add(name, director);
|
||||
Debug.Log($"Registered PlayableDirector for {name}");
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 播放指定的Timeline并等待其完成
|
||||
/// </summary>
|
||||
/// <param name="name">Timeline的名称</param>
|
||||
// [YarnCommand("play_timeline")]
|
||||
public IEnumerator PlayTimeline(string name)
|
||||
{
|
||||
if (directors.TryGetValue(name, out var director))
|
||||
{
|
||||
director.Play();
|
||||
Debug.Log($"Timeline {name} playing.");
|
||||
|
||||
// 等待Timeline播放完成
|
||||
bool isPlaying = true;
|
||||
director.stopped += (PlayableDirector aDirector) => { isPlaying = false; };
|
||||
|
||||
while (isPlaying)
|
||||
{
|
||||
yield return null;
|
||||
}
|
||||
|
||||
Debug.Log($"Timeline {name} finished.");
|
||||
director.Stop();
|
||||
|
||||
// 启动重置时间的协程,但不等待其完成
|
||||
StartCoroutine(ResetDirectorTimeCoroutine(name));
|
||||
}
|
||||
else
|
||||
{
|
||||
Debug.LogError($"PlayableDirector for {name} not found.");
|
||||
}
|
||||
}
|
||||
|
||||
private IEnumerator ResetDirectorTimeCoroutine(string name)
|
||||
{
|
||||
yield return new WaitForSeconds(2f);
|
||||
ResetDirectorTime(name);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 重置PlayableDirector的时间
|
||||
/// </summary>
|
||||
/// <param name="name">Timeline的名称</param>
|
||||
public void ResetDirectorTime(string name)
|
||||
{
|
||||
if (directors.TryGetValue(name, out var director))
|
||||
{
|
||||
director.time = 0;
|
||||
director.Evaluate(); // 评估以应用时间重置
|
||||
Debug.Log($"Timeline {name} time reset.");
|
||||
}
|
||||
else
|
||||
{
|
||||
Debug.LogError($"PlayableDirector for {name} not found.");
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 暂停指定的Timeline
|
||||
/// </summary>
|
||||
/// <param name="name">Timeline的名称</param>
|
||||
// [YarnCommand("pause_timeline")]
|
||||
public void PauseTimeline(string name)
|
||||
{
|
||||
if (directors.TryGetValue(name, out var director))
|
||||
{
|
||||
director.Pause();
|
||||
Debug.Log($"Timeline {name} paused.");
|
||||
}
|
||||
else
|
||||
{
|
||||
Debug.LogError($"PlayableDirector for {name} not found.");
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,11 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: ccea65c35014bc24080e71809ed81683
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
Reference in New Issue
Block a user