using System.Collections.Generic; using UnityEngine; using WS; [ObjectSystem] public class SceneDataSaveComponentAwakSystem : AwakeSystem { public override void Awake(SceneDataSaveComponent self) { self.Awake(); } } public class SceneDataSaveComponent : SingleComponent { private Dictionary> data = new Dictionary>(); public class SceneData { public string objName; public string animName; } public void Awake() { } /// 添加 public void AddSceneData(string sceneName, string objName, string animName) { if (data.ContainsKey(sceneName)) { if (data[sceneName].Find(x=>x.objName== objName)==null) { data[sceneName].Add(new SceneData() { objName = objName, animName = animName }); } else { int index = data[sceneName].FindIndex(x => x.objName == objName); data[sceneName][index].animName = animName; } } else { data.Add(sceneName, new List()); data[sceneName].Add(new SceneData() { objName = objName, animName = animName }); } } /// 删除流程 public void RemoveSceneData(string sceneName, string objName, string animName) { if (data.ContainsKey(sceneName)) { var d = data[sceneName].FindAll(x => x.objName == objName); if (d != null && d.Count != 0 && d.Find(x => x.animName == animName) != null) { data[sceneName].Remove(d.Find(x => x.animName == animName)); } } } ///加载场景数据 public void LoadScene(string sceneName) { if (data.ContainsKey(sceneName)) { var d = data[sceneName]; for (int i = 0; i < d.Count; i++) { var InteractObj = GameObject.Find(d[i].objName); if (InteractObj != null) { var anim = InteractObj.transform.GetComponent(); var infos = anim.runtimeAnimatorController.animationClips; for (int j = 0;j清除单个场景数据 public void RestScene(string sceneName) { if (data.ContainsKey(sceneName)) { data[sceneName].Clear(); } } ///清除所有数据 public void RestAllScene() { data.Clear(); } }