using UnityEngine; using AibisDream.Framework; using AibisDream; using System; using AibisDream.FixSystem; public class UFModule : MonoBehaviour { private GameObject _ufCover; private GameObject _ufModule; private GameObject _ufSocket; private GameObject _ufColor; private UFData _ufData=new (); private void Awake() { // 将数据注册到数据容器内 GameLoopManager.FixDataContainer.Register(_ufData); // 添加加载逻辑 _ufData.LoadEvent += LoadData; _ufModule = transform.Find("Module Pic").gameObject; _ufSocket = transform.Find("Socket").gameObject; _ufCover = _ufModule.transform.Find("Cover").gameObject; _ufColor=_ufModule.transform.Find("Color").gameObject; } // Start is called before the first frame update public void RemoveUFCover() { if (_ufCover.activeInHierarchy) { _ufCover.SetActive(false); } _ufData.isUFCoverRemoved = true; } public void RemoveUFModule() { if (_ufModule.activeInHierarchy) { _ufModule.SetActive(false); _ufSocket.SetActive(false); } _ufData.isUFRemoved = true; } public void InstallUFCover() { if (!_ufCover.activeInHierarchy) { _ufCover.SetActive(true); } _ufData.isUFCoverRemoved = false; } public void InstallUFModule() { if (!_ufModule.activeInHierarchy) { _ufModule.SetActive(true); _ufSocket.SetActive(true); } _ufData.isUFRemoved = false; } public void InstallUFColor() { if (!_ufColor.activeInHierarchy) { _ufColor.SetActive(true); } _ufData.isColorRemoved = false; } public void RemoveUFColor() { if (_ufColor.activeInHierarchy) { _ufColor.SetActive(false); } _ufData.isColorRemoved = true; } public void UFinit() { _ufModule.SetActive(!_ufData.isUFRemoved); _ufSocket.SetActive(!_ufData.isUFRemoved); _ufCover.SetActive(!_ufData.isUFCoverRemoved); _ufColor.SetActive(!_ufData.isColorRemoved); } private void LoadData(UFData ufData) { UFinit(); // 读取存档文件时触发,将当前系统恢复为目标状态 } void Start() { UFinit(); } } public class UFData : IData { public bool isUFCoverRemoved = false; public bool isUFRemoved = false; public bool isColorRemoved = false; public event Action LoadEvent; public void Load() { LoadEvent?.Invoke(this); } }