diff --git a/Assets/FMOD Banks/Desktop/Ambience.bank b/Assets/FMOD Banks/Desktop/Ambience.bank index f4f2bb576..6c178bef1 100644 Binary files a/Assets/FMOD Banks/Desktop/Ambience.bank and b/Assets/FMOD Banks/Desktop/Ambience.bank differ diff --git a/Assets/FMOD Banks/Desktop/Environment.bank b/Assets/FMOD Banks/Desktop/Environment.bank index 34be479ba..e4f6b77e2 100644 Binary files a/Assets/FMOD Banks/Desktop/Environment.bank and b/Assets/FMOD Banks/Desktop/Environment.bank differ diff --git a/Assets/FMOD Banks/Desktop/Interactions.bank b/Assets/FMOD Banks/Desktop/Interactions.bank index 924d1e892..883d549ec 100644 Binary files a/Assets/FMOD Banks/Desktop/Interactions.bank and b/Assets/FMOD Banks/Desktop/Interactions.bank differ diff --git a/Assets/FMOD Banks/Desktop/Master.bank b/Assets/FMOD Banks/Desktop/Master.bank index 866009eb4..5463b9c22 100644 Binary files a/Assets/FMOD Banks/Desktop/Master.bank and b/Assets/FMOD Banks/Desktop/Master.bank differ diff --git a/Assets/FMOD Banks/Desktop/Master.strings.bank b/Assets/FMOD Banks/Desktop/Master.strings.bank index b8c198e00..07be1e726 100644 Binary files a/Assets/FMOD Banks/Desktop/Master.strings.bank and b/Assets/FMOD Banks/Desktop/Master.strings.bank differ diff --git a/Assets/FMOD Banks/Desktop/Music.bank b/Assets/FMOD Banks/Desktop/Music.bank index 0ecbda06c..55386fba7 100644 Binary files a/Assets/FMOD Banks/Desktop/Music.bank and b/Assets/FMOD Banks/Desktop/Music.bank differ diff --git a/Assets/FMOD Banks/Desktop/UI.bank b/Assets/FMOD Banks/Desktop/UI.bank index cacdca09d..3120f246b 100644 Binary files a/Assets/FMOD Banks/Desktop/UI.bank and b/Assets/FMOD Banks/Desktop/UI.bank differ diff --git a/Assets/FMOD Banks/Desktop/VO.bank b/Assets/FMOD Banks/Desktop/VO.bank index 33e36c8b0..f0c7fba21 100644 Binary files a/Assets/FMOD Banks/Desktop/VO.bank and b/Assets/FMOD Banks/Desktop/VO.bank differ diff --git a/Assets/Plugins/FMOD/Resources/FMODStudioSettings.asset b/Assets/Plugins/FMOD/Resources/FMODStudioSettings.asset index d2fb5278a..3310bd32a 100644 --- a/Assets/Plugins/FMOD/Resources/FMODStudioSettings.asset +++ b/Assets/Plugins/FMOD/Resources/FMODStudioSettings.asset @@ -289,16 +289,16 @@ MonoBehaviour: HasValue: 0 displaySortOrder: 0 childIdentifiers: - - 0f8eb3f400726694eb47beb1a9f94ce8 - - 46fbfdf3fc43db0458918377fd40293e - 2fea114e74ecf3c4f920e1d5cc1c4c40 - - e7a046c753c3c3d4aacc91f6597f310d - - 52eb9df5db46521439908db3a29a1bbb - - 2c5177b11d81d824dbb064f9ac8527da - - b7716510a1f36934c87976f3a81dbf3d - - c88d16e5272a4e241b0ef0ac2e53b73d - de700ef3f37a49b58a57ae3addf01ad9 - fd7c55dab0fce234b8c25f6ffca523c1 + - c88d16e5272a4e241b0ef0ac2e53b73d + - 52eb9df5db46521439908db3a29a1bbb + - e7a046c753c3c3d4aacc91f6597f310d + - 2c5177b11d81d824dbb064f9ac8527da + - 46fbfdf3fc43db0458918377fd40293e + - 0f8eb3f400726694eb47beb1a9f94ce8 + - b7716510a1f36934c87976f3a81dbf3d codecChannels: Value: [] HasValue: 0 @@ -610,7 +610,7 @@ MonoBehaviour: HasSourceProject: 0 HasPlatforms: 1 sourceProjectPath: - sourceBankPath: Assets/FMOD Banks + sourceBankPath: Assets/StreamingAssets/FMOD sourceBankPathUnformatted: BankRefreshCooldown: 5 ShowBankRefreshWindow: 1 @@ -632,14 +632,14 @@ MonoBehaviour: RealChannelSettings: [] Plugins: [] MasterBanks: - - Desktop/Master + - Master Banks: - - Desktop/Ambience - - Desktop/Environment - - Desktop/Interactions - - Desktop/Music - - Desktop/UI - - Desktop/VO + - Ambience + - Environment + - Interactions + - Music + - UI + - VO BanksToLoad: [] LiveUpdatePort: 9264 EnableMemoryTracking: 0 @@ -655,18 +655,18 @@ MonoBehaviour: HideSetupWizard: 1 LastEventReferenceScanVersion: 131621 Platforms: - - {fileID: 4397086664669695925} - - {fileID: -2619252103634704479} - - {fileID: 7223939234266169234} - - {fileID: 4669352974370910123} - {fileID: -7599089935785178640} - - {fileID: -1279143063320469121} - - {fileID: -1855877162769961118} - - {fileID: -634705678149131141} - - {fileID: 9199457959637037873} - - {fileID: -2507512691418502381} - {fileID: -5493265246809852409} - {fileID: -4289928003684796904} + - {fileID: -2619252103634704479} + - {fileID: -2507512691418502381} + - {fileID: -1855877162769961118} + - {fileID: -1279143063320469121} + - {fileID: -634705678149131141} + - {fileID: 4397086664669695925} + - {fileID: 4669352974370910123} + - {fileID: 7223939234266169234} + - {fileID: 9199457959637037873} MigratedPlatforms: 150000000a0000000800000005000000060000000c0000000b0000001200000000000000090000000200000001000000 --- !u!114 &4397086664669695925 MonoBehaviour: diff --git a/Assets/Scenes/Persistence.unity b/Assets/Scenes/Persistence.unity index c22a1fe11..f440320a0 100644 --- a/Assets/Scenes/Persistence.unity +++ b/Assets/Scenes/Persistence.unity @@ -4762,6 +4762,50 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 297985369} m_CullTransparentMesh: 1 +--- !u!1 &314243161 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 314243162} + - component: {fileID: 314243163} + m_Layer: 0 + m_Name: Storage System + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &314243162 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 314243161} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1936621685} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &314243163 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 314243161} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: bd2f44edfbd942b49bb7a37f80d7a5eb, type: 3} + m_Name: + m_EditorClassIdentifier: --- !u!1 &331068878 GameObject: m_ObjectHideFlags: 0 @@ -9428,7 +9472,7 @@ GameObject: m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 1 + m_IsActive: 0 --- !u!4 &667130562 Transform: m_ObjectHideFlags: 0 @@ -24215,6 +24259,7 @@ Transform: m_Children: - {fileID: 331068879} - {fileID: 667130562} + - {fileID: 314243162} m_Father: {fileID: 72512886} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!114 &1936621686 @@ -24230,7 +24275,7 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: yarnProject: {fileID: 0} - _variableStorage: {fileID: 667130563} + _variableStorage: {fileID: 314243163} dialogueViews: - {fileID: 1584263515} startNode: Start diff --git a/Assets/Scripts/Clue/ClueBaordNew.cs b/Assets/Scripts/Clue/ClueBaordNew.cs index a4700dc5d..f1c554f76 100644 --- a/Assets/Scripts/Clue/ClueBaordNew.cs +++ b/Assets/Scripts/Clue/ClueBaordNew.cs @@ -216,8 +216,8 @@ public void NodeInit(string nodeID,bool isactive) public void CheckConnection(Connection connection) { currentConnection=connection; - DialogController.Instance.SetVariable("$StartNode",connection.port0.node.ID); - DialogController.Instance.SetVariable("$EndNode",connection.port1.node.ID); + StorageSystem.Instance?.SetValue("$StartNode",connection.port0.node.ID); + StorageSystem.Instance?.SetValue("$EndNode",connection.port1.node.ID); if(isTriggerDialogue) { DialogController.Instance.StartDialogNode("检查ClueBoard"); diff --git a/Assets/Scripts/Dialog System/BaseYarnCommand.cs b/Assets/Scripts/Dialog System/BaseYarnCommand.cs index 32d08b89f..adbc2d30e 100644 --- a/Assets/Scripts/Dialog System/BaseYarnCommand.cs +++ b/Assets/Scripts/Dialog System/BaseYarnCommand.cs @@ -14,14 +14,16 @@ namespace AibisDream public static void NextYarn() { EnumEventSystem.Global.Send(EventEnum.NextYarn); - DialogController.Instance.ClearVariables(); + StorageSystem.Instance.ClearLocal(); DialogController.Instance.StartCoroutine(GameLoopManager.Instance.NextSceneSo()); } + [YarnCommand("BackToMenu")] public static void BackToMenu() { StartMenu.Instance.BackToMenu(); } + [YarnCommand("OpenEndMenu")] public static void OpenEndMenu() { @@ -41,7 +43,7 @@ namespace AibisDream { Debug.Log("show_tv_scene 已废弃"); } - + [YarnCommand("load_scene")] public static IEnumerator LoadScene(string sceneName, float duration = 1) { @@ -84,7 +86,7 @@ namespace AibisDream { return MainUIController.Instance.HideObj(); } - + [YarnCommand("show_full_screen")] public static IEnumerator ShowFullScreen(string picName) { diff --git a/Assets/Scripts/Dialog System/DialogController.cs b/Assets/Scripts/Dialog System/DialogController.cs index b0a4562a8..8a05aff13 100644 --- a/Assets/Scripts/Dialog System/DialogController.cs +++ b/Assets/Scripts/Dialog System/DialogController.cs @@ -10,7 +10,6 @@ namespace AibisDream public class DialogController : Singleton { private DialogueRunner _dialogueRunner; - private VariableStorageBehaviour _variableStorage; # region controller状态标识 @@ -46,7 +45,6 @@ namespace AibisDream private void Start() { _dialogueRunner = GetComponentInChildren(); - _variableStorage = GetComponentInChildren(); _dialogueRunner.onDialogueStart.AddListener(() => { @@ -72,45 +70,11 @@ namespace AibisDream private void ResetDialog() { _dialogueRunner.Stop(); - _variableStorage.Clear(); + StorageSystem.Instance.Clear(); DialogCanvasManager.Instance.HideDialog(); DialogCanvasManager.Instance.SwitchDialogView(DialogViewType.OldBox); } - #region 变量操作 - - public bool TryGetVariable(string variableName, out T result) - { - return _variableStorage.TryGetValue(variableName, out result); - } - - public void SetVariable(string variableName, string value) - { - _variableStorage.SetValue(variableName, value); - } - - public void SetVariable(string variableName, bool value) - { - _variableStorage.SetValue(variableName, value); - } - - public void SetVariable(string variableName, float value) - { - _variableStorage.SetValue(variableName, value); - } - - public bool Contains(string variableName) - { - return _variableStorage.Contains(variableName); - } - - public void ClearVariables() - { - _variableStorage.Clear(); - } - - #endregion - /// /// 开启对话 /// diff --git a/Assets/Scripts/FixSystemNew/CoolingMachine/BottleShelf.cs b/Assets/Scripts/FixSystemNew/CoolingMachine/BottleShelf.cs deleted file mode 100644 index dacc903f7..000000000 --- a/Assets/Scripts/FixSystemNew/CoolingMachine/BottleShelf.cs +++ /dev/null @@ -1,54 +0,0 @@ -using System.Collections; -using DG.Tweening; -using UnityEngine; - -namespace AibisDream.FixSystem -{ - public class BottleShelf : MonoBehaviour - { - [Header("整体位置")] - public Vector3 showPos; - public Vector3 hidePos; - - [Header("动画时间")] - public float showDuration; - - #region 引用 - - private BottleSlot[] _bottleSlots; - - #endregion - - private void Awake() - { - transform.localPosition = hidePos; - - InitRefs(); - } - - private void InitRefs() - { - _bottleSlots = GetComponentsInChildren(); - } - - /// - /// 显示泵机UI - /// - /// 显示 - public IEnumerator Show() - { - gameObject.SetActive(true); - yield return transform.DOLocalMove(showPos, showDuration).WaitForCompletion(); - } - - /// - /// 隐藏泵机UI - /// - /// 隐藏 - public IEnumerator Hide() - { - yield return transform.DOLocalMove(hidePos, showDuration).WaitForCompletion(); - gameObject.SetActive(false); - } - } -} \ No newline at end of file diff --git a/Assets/Scripts/FixSystemNew/CoolingMachine/BottleShelf.cs.meta b/Assets/Scripts/FixSystemNew/CoolingMachine/BottleShelf.cs.meta deleted file mode 100644 index 06b55b4e6..000000000 --- a/Assets/Scripts/FixSystemNew/CoolingMachine/BottleShelf.cs.meta +++ /dev/null @@ -1,3 +0,0 @@ -fileFormatVersion: 2 -guid: 6796b547c41a4f95b37dd869332fa06b -timeCreated: 1734711369 \ No newline at end of file diff --git a/Assets/Scripts/FixSystemNew/CoolingMachine/BottleSlot.cs b/Assets/Scripts/FixSystemNew/CoolingMachine/BottleSlot.cs deleted file mode 100644 index 2070beae5..000000000 --- a/Assets/Scripts/FixSystemNew/CoolingMachine/BottleSlot.cs +++ /dev/null @@ -1,120 +0,0 @@ -using System; -using UnityEngine; - -namespace AibisDream.FixSystem -{ - [RequireComponent(typeof(Collider2D))] - public class BottleSlot : MonoBehaviour - { - public event Action InsertSlotEvent; - public event Action RemoveSlotEvent; - public CoolingBottleData initBottleData; - - private CoolingBottle _curBottle; - private GameObject _bottlePrefab; - private bool _inShelf; - - private void Start() - { - InitRefs(); - InitBottle(); - } - - private void InitRefs() - { - var shelf = GetComponentInParent(); - // 根据在瓶架上还是机器中确定操作 - _inShelf = shelf != null; - - _bottlePrefab = Resources.Load("Prefabs/Fix/Bottle"); - } - - private void InitBottle() - { - if (string.IsNullOrEmpty(initBottleData.name)) return; - - var newBottle = Instantiate(_bottlePrefab, transform).GetComponent(); - _curBottle = newBottle; - // 加载瓶子数据 - newBottle.Load(initBottleData); - newBottle.curSnapSlot = this; - } - - /// - /// 与瓶子发生碰撞时 - /// - /// - private void OnTriggerEnter2D(Collider2D other) - { - // 如果当前Slot里已经有瓶子了,就返回 - if (_curBottle != null) return; - - // 尝试获取瓶子 - if (other.gameObject.TryGetComponent(out var bottle)) - { - bottle.targetSnapSlotSet.Add(this); - } - } - - /// - /// 瓶子离开时 - /// - /// - private void OnTriggerExit2D(Collider2D other) - { - // 尝试获取瓶子 - if (other.gameObject.TryGetComponent(out var bottle)) - { - bottle.targetSnapSlotSet.Remove(this); - } - } - - /// - /// 移除当前瓶子 - /// - public void RemoveBottle() - { - _curBottle = null; - RemoveSlotEvent?.Invoke(); - } - - /// - /// 插入时触发 - /// - /// - public void InsertSlot(CoolingBottle coolingBottle) - { - _curBottle = coolingBottle; - _curBottle.transform.parent = transform; - // 在架子上才正过来 - if (_inShelf) - { - coolingBottle.Rotate(true); - } - } - - public void ChangeSlot(CoolingBottle coolingBottle) - { - InsertSlotEvent?.Invoke(coolingBottle); - } - - /// - /// 是否有冷却液 - /// - /// 瓶子 - public CoolingBottle GetCurBottle() - { - return _curBottle; - } - - public void DestroyBottle() - { - if (_curBottle) - { - _curBottle.transform.parent = null; - Destroy(_curBottle.gameObject); - _curBottle = null; - } - } - } -} \ No newline at end of file diff --git a/Assets/Scripts/FixSystemNew/CoolingMachine/BottleSlot.cs.meta b/Assets/Scripts/FixSystemNew/CoolingMachine/BottleSlot.cs.meta deleted file mode 100644 index 221f2da72..000000000 --- a/Assets/Scripts/FixSystemNew/CoolingMachine/BottleSlot.cs.meta +++ /dev/null @@ -1,3 +0,0 @@ -fileFormatVersion: 2 -guid: 67ce5499de014b3aae82bf1db274b14b -timeCreated: 1734872735 \ No newline at end of file diff --git a/Assets/Scripts/FixSystemNew/CoolingMachine/CoolingBottle.cs b/Assets/Scripts/FixSystemNew/CoolingMachine/CoolingBottle.cs deleted file mode 100644 index a187fb16f..000000000 --- a/Assets/Scripts/FixSystemNew/CoolingMachine/CoolingBottle.cs +++ /dev/null @@ -1,154 +0,0 @@ -using System; -using System.Collections; -using System.Collections.Generic; -using AibisDream.Framework; -using DG.Tweening; -using UnityEngine; - -namespace AibisDream.FixSystem -{ - [RequireComponent(typeof(Collider2D), typeof(Rigidbody2D))] - public class CoolingBottle : MonoBehaviour, IMoveable - { - private const float RotateTime = 0.3f; - private const float SnapMoveTime = 0.3f; - private static readonly Vector3 ClockwiseAngle = new(0, 0, 0); - private static readonly Vector3 ClockWiseScale = new(1, 1, 1); - private static readonly Vector3 AnticlockwiseAngle = new(0, 0, 90); - private static readonly Vector3 AnticlockwiseScale = new(1.45f, 1.45f, 1); - - public CoolingBottleData data; - - #region 引用 - - private Sprite _verticalSprite; - private Sprite _horizontalSprite; - - public BottleSlot curSnapSlot; - public readonly HashSet targetSnapSlotSet = new(); - - private Rigidbody2D _rb; - private SpriteRenderer _renderer; - - #endregion - - private void Awake() - { - InitRefs(); - } - - private void InitRefs() - { - _rb = GetComponent(); - _renderer = GetComponent(); - } - - #region 移动逻辑 - - public bool IsBlock { get; set; } - - public void StartMove() - { - _rb.isKinematic = false; - gameObject.layer = LayerMask.NameToLayer("Clinic"); - // 开始移动时就切换成横版 - Rotate(false); - } - - public void Rotate(bool isVertical) - { - StartCoroutine(RotateAsync(isVertical)); - } - - /// - /// 旋转瓶子 - /// - /// 是否竖直 - /// - private IEnumerator RotateAsync(bool isVertical) - { - var angle = isVertical ? ClockwiseAngle : AnticlockwiseAngle; - var scale = isVertical ? ClockWiseScale : AnticlockwiseScale; - // 动画序列 - var sq = DOTween.Sequence(); - Tween rotate = transform.DORotate(angle, RotateTime, RotateMode.FastBeyond360); - sq.Join(rotate); - Tween scaleTw = transform.DOScale(scale, RotateTime); - sq.Join(scaleTw); - - yield return sq.WaitForCompletion(); - } - - public void Move(Vector2 mousePos) - { - _rb.MovePosition(mousePos); - } - - public void StopMove() - { - if (TryFindClosestSlot(out var targetSlot)) - { - // 从原有Slot移出 - curSnapSlot.RemoveBottle(); - // 更新到新的Slot - curSnapSlot = targetSlot; - - curSnapSlot.ChangeSlot(this); - } - - targetSnapSlotSet.Clear(); - - // 吸附到目标位置 - _rb.isKinematic = true; - gameObject.layer = LayerMask.NameToLayer("Default"); - curSnapSlot.InsertSlot(this); - transform.DOMove(curSnapSlot.transform.position, SnapMoveTime); - - // TODO 停止描边 - } - - public bool TryFindClosestSlot(out BottleSlot targetSlot) - { - // 没有目标Slot,返回 - if (targetSnapSlotSet.Count == 0) - { - targetSlot = null; - return false; - } - - // 寻找最近的Slot - var shortestDistance = float.MaxValue; - BottleSlot closestSlot = null; - foreach (var slot in targetSnapSlotSet) - { - var distance = Vector3.Distance(slot.transform.position, transform.position); - if (distance < shortestDistance) - { - shortestDistance = distance; - closestSlot = slot; - } - } - - targetSlot = closestSlot; - return true; - } - - #endregion - - public void Load(CoolingBottleData targetData) - { - data = targetData; - _verticalSprite = ResourceKit.LoadSpriteFromPsd($"Art/Fix/Cooling/冷却系统/{data.verticalSprite}"); - _renderer.sprite = _verticalSprite; - } - } - - [Serializable] - public struct CoolingBottleData - { - public string name; - public string description; - public string verticalSprite; - public string horizontalSprite; - } -} \ No newline at end of file diff --git a/Assets/Scripts/FixSystemNew/CoolingMachine/CoolingBottle.cs.meta b/Assets/Scripts/FixSystemNew/CoolingMachine/CoolingBottle.cs.meta deleted file mode 100644 index a7b3696b9..000000000 --- a/Assets/Scripts/FixSystemNew/CoolingMachine/CoolingBottle.cs.meta +++ /dev/null @@ -1,3 +0,0 @@ -fileFormatVersion: 2 -guid: 6474997a226747428064c19bfb501a0f -timeCreated: 1734870985 \ No newline at end of file diff --git a/Assets/Scripts/FixSystemNew/CoolingMachine/CoolingSystem.cs b/Assets/Scripts/FixSystemNew/CoolingMachine/CoolingSystem.cs deleted file mode 100644 index e9970e5b5..000000000 --- a/Assets/Scripts/FixSystemNew/CoolingMachine/CoolingSystem.cs +++ /dev/null @@ -1,166 +0,0 @@ -using System.Collections; -using AibisDream.FixSystem; -using Cinemachine; -using UnityEngine; - -namespace AibisDream.Framework -{ - public class CoolingSystem : MonoBehaviour, ICoolingSystem - { - #region 引用 - - private PumpController _pumpUI; - private BottleShelf _bottomUI; - private TubeController _tubeUI; - - #endregion - - #region 状态 - - public bool isLocked; - - private CoolingBottle CurBottle => _pumpUI.bottleSlot.GetCurBottle(); - - #endregion - - private void Awake() - { - FixSystemCenter.SystemDic.Register(this); - InitRefs(); - - // 注册相机 - var virtualCam = transform.Find("Cooling Camera").GetComponent(); - CameraKit.Instance.RegisterCamera(CameraEnum.CoolingMachine, virtualCam); - } - - private void InitRefs() - { - _pumpUI = transform.Find("Pump Part").GetComponent(); - _bottomUI = transform.Find("Bottom Part").GetComponent(); - _tubeUI = transform.Find("Tube Part").GetComponent(); - - isLocked = true; - } - - private void OnDestroy() - { - CameraKit.Instance.UnRegisterCamera(CameraEnum.CoolingMachine); - } - - #region 对外开放 - - public IEnumerator OpenCoolingSystem() - { - yield return _pumpUI.Show(); - } - - public IEnumerator LinkTube() - { - // 播放插线动画,完成后自动关闭 - yield return _tubeUI.PlayLinkAnime(); - } - - public IEnumerator OpenBottleUI() - { - yield return _bottomUI.Show(); - } - - public void Unlock() - { - isLocked = false; - if (CurBottle) - { - CurBottle.IsBlock = false; - } - _pumpUI.OpenBuckle(); - } - - public void InsertBottle(CoolingBottle bottle) - { - // 设置当前瓶子名称 - DialogController.Instance.SetVariable("$curBottleName", bottle.data.name); - // 触发插入对话 - DialogController.Instance.StartDialogNode("插入冷却液"); - } - - public void RemoveBottle() - { - DialogController.Instance.SetVariable("$curBottleName", ""); - } - - public void Lock() - { - isLocked = true; - // 已锁定的瓶子禁止使用 - if (CurBottle) - { - CurBottle.IsBlock = true; - } - _pumpUI.CloseBuckle(); - } - - public void StartPump() - { - // 进行泵机操作 - if (isLocked && CurBottle) - { - // 播放pump动画 - _pumpUI.PlayPumpAnime(); - // 播放泵机运行对话 - DialogController.Instance.StartDialogNode("泵机运行"); - } - } - - public IEnumerator CloseBottleUI() - { - yield return _bottomUI.Hide(); - } - - public IEnumerator CloseCoolingSystem() - { - yield return _pumpUI.Hide(); - } - - public void StopPump() - { - // 冷却液界面 - _pumpUI.StopPumpAnime(); - _pumpUI.DestroyBottle(); - } - - public IEnumerator PullOutTube() - { - yield return _tubeUI.PlayPullOutAnime(); - } - - #endregion - } - - public interface ICoolingSystem - { - // 打开冷却系统UI - public IEnumerator OpenCoolingSystem(); - // 插管 - public IEnumerator LinkTube(); - // 打开左侧冷却液界面 - public IEnumerator OpenBottleUI(); - // 打开卡扣 - public void Unlock(); - // 插入冷却液瓶子 - public void InsertBottle(CoolingBottle bottle); - // 移出冷却液瓶子 - public void RemoveBottle(); - // 关闭卡扣 - public void Lock(); - // 点击泵机开关 - public void StartPump(); - // 冷却液架收回 - public IEnumerator CloseBottleUI(); - // 冷却系统UI收回 - public IEnumerator CloseCoolingSystem(); - // 拔管 - public IEnumerator PullOutTube(); - // 停止泵机 - public void StopPump(); - } -} \ No newline at end of file diff --git a/Assets/Scripts/FixSystemNew/CoolingMachine/CoolingSystem.cs.meta b/Assets/Scripts/FixSystemNew/CoolingMachine/CoolingSystem.cs.meta deleted file mode 100644 index da080fb6b..000000000 --- a/Assets/Scripts/FixSystemNew/CoolingMachine/CoolingSystem.cs.meta +++ /dev/null @@ -1,3 +0,0 @@ -fileFormatVersion: 2 -guid: 5eec820fd32945b3bfa49381d6e90890 -timeCreated: 1734682124 \ No newline at end of file diff --git a/Assets/Scripts/FixSystemNew/CoolingMachine/CoolingSystemCommand.cs b/Assets/Scripts/FixSystemNew/CoolingMachine/CoolingSystemCommand.cs deleted file mode 100644 index 093c0d965..000000000 --- a/Assets/Scripts/FixSystemNew/CoolingMachine/CoolingSystemCommand.cs +++ /dev/null @@ -1,106 +0,0 @@ -using System.Collections; -using AibisDream.Framework; -using UnityEngine; -using Yarn.Unity; - -namespace AibisDream.FixSystem -{ - public static class CoolingSystemCommand - { - // 打开冷却系统UI - [YarnCommand("open_cooling_system")] - public static IEnumerator OpenCoolingSystem() - { - // var cooling = FixSystemCenter.SystemDic.Get(); - // return cooling.OpenCoolingSystem(); - Debug.Log("冷却系统停用"); - yield break; - } - - // 插管 - [YarnCommand("link_tube")] - public static IEnumerator LinkTube() - { - // var cooling = FixSystemCenter.SystemDic.Get(); - // return cooling.LinkTube(); - Debug.Log("冷却系统停用"); - yield break; - } - - // 打开左侧冷却液界面 - [YarnCommand("open_bottle_ui")] - public static IEnumerator OpenBottleUI() - { - // var cooling = FixSystemCenter.SystemDic.Get(); - // return cooling.OpenBottleUI(); - Debug.Log("冷却系统停用"); - yield break; - } - - // 打开卡扣 - [YarnCommand("unlock")] - public static void Unlock() - { - // var cooling = FixSystemCenter.SystemDic.Get(); - // cooling.Unlock(); - Debug.Log("冷却系统停用"); - } - - // 关闭卡扣 - [YarnCommand("lock")] - public static void Lock() - { - // var cooling = FixSystemCenter.SystemDic.Get(); - // cooling.Lock(); - Debug.Log("冷却系统停用"); - } - - // 点击泵机开关 - [YarnCommand("start_pump")] - public static void StartPump() - { - // var cooling = FixSystemCenter.SystemDic.Get(); - // cooling.StartPump(); - Debug.Log("冷却系统停用"); - } - - // 冷却液架收回 - [YarnCommand("close_bottle_ui")] - public static IEnumerator CloseBottleUI() - { - // var cooling = FixSystemCenter.SystemDic.Get(); - // return cooling.CloseBottleUI(); - Debug.Log("冷却系统停用"); - yield break; - } - - // 冷却系统UI收回 - [YarnCommand("close_cooling_system")] - public static IEnumerator CloseCoolingSystem() - { - // var cooling = FixSystemCenter.SystemDic.Get(); - // return cooling.CloseCoolingSystem(); - Debug.Log("冷却系统停用"); - yield break; - } - - // 拔管 - [YarnCommand("pull_out_tube")] - public static IEnumerator PullOutTube() - { - // var cooling = FixSystemCenter.SystemDic.Get(); - // return cooling.PullOutTube(); - Debug.Log("冷却系统停用"); - yield break; - } - - // 运行结束 - [YarnCommand("stop_pump")] - public static void StopPump() - { - // var cooling = FixSystemCenter.SystemDic.Get(); - // cooling.StopPump(); - Debug.Log("冷却系统停用"); - } - } -} \ No newline at end of file diff --git a/Assets/Scripts/FixSystemNew/CoolingMachine/CoolingSystemCommand.cs.meta b/Assets/Scripts/FixSystemNew/CoolingMachine/CoolingSystemCommand.cs.meta deleted file mode 100644 index 73995d647..000000000 --- a/Assets/Scripts/FixSystemNew/CoolingMachine/CoolingSystemCommand.cs.meta +++ /dev/null @@ -1,3 +0,0 @@ -fileFormatVersion: 2 -guid: 4b0dd86fff64466d893bbba5891722c4 -timeCreated: 1735114274 \ No newline at end of file diff --git a/Assets/Scripts/FixSystemNew/CoolingMachine/PumpController.cs b/Assets/Scripts/FixSystemNew/CoolingMachine/PumpController.cs deleted file mode 100644 index 56ee3958a..000000000 --- a/Assets/Scripts/FixSystemNew/CoolingMachine/PumpController.cs +++ /dev/null @@ -1,168 +0,0 @@ -using System.Collections; -using AibisDream.Framework; -using DG.Tweening; -using UnityEngine; - -namespace AibisDream.FixSystem -{ - public class PumpController : MonoBehaviour - { - [Header("整体位置")] public Vector3 hidePos; - public Vector3 showPos; - - public Vector3 topBuckleUnlockPos; - public Vector3 leftBuckleUnlockPos; - public Vector3 rightBuckleUnlockPos; - public Vector3 topBuckleLockPos; - public Vector3 leftBuckleLockPos; - public Vector3 rightBuckleLockPos; - - public Vector3 pumpUpPos; - public Vector3 pumpDownPos; - - [Header("移动用时")] public float showDuration; - public float buckleDuration; - public float pumpDuration; - - #region 组件索引 - - private CoolingSystem _coolingSystem; - - private SpriteButton _lockButton; - private SpriteButton _pumpButton; - private Transform _topBuckle; - private Transform _leftBuckle; - private Transform _rightBuckle; - - [HideInInspector] public BottleSlot bottleSlot; - private GameObject _lockBox; - - private Transform _pumpHead; - private GameObject _coolingScreen; - - #endregion - - private void Awake() - { - InitRefs(); - transform.localPosition = hidePos; - } - - private void InitRefs() - { - // 初始化引用 - _coolingSystem = GetComponentInParent(); - - var buckleGroup = transform.Find("按键卡扣组"); - - _lockButton = new SpriteButton(buckleGroup.Find("Lock Button").gameObject); - _pumpButton = new SpriteButton(buckleGroup.Find("Pump Button").gameObject); - _lockButton.OnButtonDown += LockButtonDown; - _pumpButton.OnButtonDown += PumpButtonDown; - - _topBuckle = buckleGroup.Find("上下卡扣"); - _leftBuckle = buckleGroup.Find("左卡扣"); - _rightBuckle = buckleGroup.Find("右卡扣"); - - _lockBox = buckleGroup.Find("锁定占位").gameObject; - _lockBox.SetActive(true); - - var pumpGroup = transform.Find("泵机组"); - _pumpHead = pumpGroup.Find("泵头"); - _coolingScreen = pumpGroup.Find("泵机运作时亮灯").gameObject; - - bottleSlot = GetComponentInChildren(); - bottleSlot.InsertSlotEvent += _coolingSystem.InsertBottle; - bottleSlot.RemoveSlotEvent += _coolingSystem.RemoveBottle; - } - - #region 按钮 - - private void LockButtonDown() - { - if (_coolingSystem.isLocked) - { - _coolingSystem.Unlock(); - } - else - { - _coolingSystem.Lock(); - } - } - - private void PumpButtonDown() - { - _coolingSystem.StartPump(); - } - - private void Update() - { - _lockButton.CheckButtonClick(); - _pumpButton.CheckButtonClick(); - } - - #endregion - - #region 对外暴露 - - /// - /// 显示泵机UI - /// - /// 显示 - public IEnumerator Show() - { - gameObject.SetActive(true); - yield return transform.DOLocalMove(showPos, showDuration).WaitForCompletion(); - } - - /// - /// 隐藏泵机UI - /// - /// 隐藏 - public IEnumerator Hide() - { - yield return transform.DOLocalMove(hidePos, showDuration).WaitForCompletion(); - - gameObject.SetActive(false); - } - - public void OpenBuckle() - { - _lockBox.SetActive(false); - - _topBuckle.DOLocalMove(topBuckleUnlockPos, buckleDuration); - _leftBuckle.DOLocalMove(leftBuckleUnlockPos, buckleDuration); - _rightBuckle.DOLocalMove(rightBuckleUnlockPos, buckleDuration); - } - - public void CloseBuckle() - { - _lockBox.SetActive(true); - - _topBuckle.DOLocalMove(topBuckleLockPos, buckleDuration); - _leftBuckle.DOLocalMove(leftBuckleLockPos, buckleDuration); - _rightBuckle.DOLocalMove(rightBuckleLockPos, buckleDuration); - } - - public void PlayPumpAnime() - { - _pumpHead.DOLocalMove(pumpDownPos, pumpDuration).SetLoops(-1, LoopType.Yoyo) - .SetEase(Ease.Linear); - _coolingScreen.SetActive(true); - } - - public void StopPumpAnime() - { - _pumpHead.DOKill(); - _pumpHead.localPosition = pumpUpPos; - _coolingScreen.SetActive(false); - } - - public void DestroyBottle() - { - bottleSlot.DestroyBottle(); - } - - #endregion - } -} \ No newline at end of file diff --git a/Assets/Scripts/FixSystemNew/CoolingMachine/PumpController.cs.meta b/Assets/Scripts/FixSystemNew/CoolingMachine/PumpController.cs.meta deleted file mode 100644 index 57d0a3f5a..000000000 --- a/Assets/Scripts/FixSystemNew/CoolingMachine/PumpController.cs.meta +++ /dev/null @@ -1,3 +0,0 @@ -fileFormatVersion: 2 -guid: 8c0964c55b8c49458ad7740405fde98a -timeCreated: 1734708209 \ No newline at end of file diff --git a/Assets/Scripts/FixSystemNew/CoolingMachine/TubeController.cs b/Assets/Scripts/FixSystemNew/CoolingMachine/TubeController.cs deleted file mode 100644 index 4dc1d02d8..000000000 --- a/Assets/Scripts/FixSystemNew/CoolingMachine/TubeController.cs +++ /dev/null @@ -1,103 +0,0 @@ -using System.Collections; -using DG.Tweening; -using UnityEngine; - -namespace AibisDream.FixSystem -{ - public class TubeController : MonoBehaviour - { - [Header("插管蒙太奇整体位置")] - public Vector3 showPos; - public Vector3 hidePos; - - [Header("管子位置")] - public Vector3 pullOutPos; - public Vector3 linkPos; - - [Header("动画时间")] - public float showDuration; - public float plugDuration; - - private Transform _tube; - - private void Awake() - { - InitRefs(); - } - - private void InitRefs() - { - _tube = transform.Find("插线"); - - _tube.localPosition = pullOutPos; - transform.localPosition = hidePos; - } - - /// - /// 播放连接动画 - /// - /// 协程 - public IEnumerator PlayLinkAnime() - { - yield return ShowAndHide(LinkAction()); - } - - /// - /// 播放拔出动画 - /// - /// 协程 - public IEnumerator PlayPullOutAnime() - { - yield return ShowAndHide(PullOutAction()); - } - - private IEnumerator LinkAction() - { - // 插线 - Tween link = _tube.DOLocalMove(linkPos, plugDuration); - while (link.active && !link.IsComplete()) - { - yield return null; - } - // 插完线后更新人物图片 - ClinicYarnCommand.AddLinkDevice(); - } - - private IEnumerator PullOutAction() - { - // 拔线 - Tween pullOut = _tube.DOLocalMove(pullOutPos, plugDuration); - while (pullOut.active && !pullOut.IsComplete()) - { - yield return null; - } - // 插完线后更新人物图片 - ClinicYarnCommand.RemoveLinkDevice(); - } - - private IEnumerator ShowAndHide(IEnumerator middleAction) - { - gameObject.SetActive(true); - // 打开插管部分 - Tween showTween = transform.DOLocalMove(showPos, showDuration); - while (showTween.active && !showTween.IsComplete()) - { - yield return null; - } - // 暂停一下 - yield return new WaitForSeconds(2f); - // 中间动作 - yield return middleAction; - // 暂停一下 - yield return new WaitForSeconds(2f); - // 关闭插管部分 - Tween hideTween = transform.DOLocalMove(hidePos, showDuration); - while (hideTween.active && !hideTween.IsComplete()) - { - yield return null; - } - - gameObject.SetActive(false); - } - } -} \ No newline at end of file diff --git a/Assets/Scripts/FixSystemNew/CoolingMachine/TubeController.cs.meta b/Assets/Scripts/FixSystemNew/CoolingMachine/TubeController.cs.meta deleted file mode 100644 index e06862f32..000000000 --- a/Assets/Scripts/FixSystemNew/CoolingMachine/TubeController.cs.meta +++ /dev/null @@ -1,3 +0,0 @@ -fileFormatVersion: 2 -guid: c57722dc077140e9b09a39b870ef4d8c -timeCreated: 1734685901 \ No newline at end of file diff --git a/Assets/Scripts/FixSystemNew/FixStateMachine.cs b/Assets/Scripts/FixSystemNew/FixStateMachine.cs index 98219453c..6473ebb56 100644 --- a/Assets/Scripts/FixSystemNew/FixStateMachine.cs +++ b/Assets/Scripts/FixSystemNew/FixStateMachine.cs @@ -30,11 +30,11 @@ namespace AibisDream.FixSystem public IEnumerator SwitchState(FixState nextState, string args = "") { if (CurState == nextState) yield break; - + _curArgs = args; yield return _curState?.Exit(); - + _curState = CreateState(nextState, _curArgs); EnumEventSystem.Global.Send(EventEnum.FixStateSwitch, nextState); @@ -54,7 +54,6 @@ namespace AibisDream.FixSystem { FixState.Clinic => new ClinicState(), FixState.Engine => new EngineState(), - FixState.CoolingMachine => new CoolingMachineState(), FixState.BodyModule => new BodyModuleState(), FixState.Memory => new MemoryState(), FixState.Eye => new EyeState(), @@ -72,7 +71,6 @@ namespace AibisDream.FixSystem { Default, Clinic, - CoolingMachine, BodyModule, Memory, Eye, @@ -212,43 +210,6 @@ namespace AibisDream.FixSystem } } - public struct CoolingMachineState : IState - { - private bool _playLink; - - public FixState GetState => FixState.CoolingMachine; - - public void SetArgs(string args) - { - _playLink = !string.IsNullOrEmpty(args); - } - - public IEnumerator Enter() - { - var coolingSystem = FixSystemCenter.SystemDic.Get(); - // 切相机 - yield return CameraKit.Instance.SwitchCamera(CameraEnum.CoolingMachine); - - // 打开泵机 - coolingSystem.gameObject.SetActive(true); - yield return coolingSystem.OpenCoolingSystem(); - // 播放插线动画 - if (_playLink) - { - yield return coolingSystem.LinkTube(); - } - } - - public IEnumerator Exit() - { - var cooling = FixSystemCenter.SystemDic.Get(); - - yield return cooling.CloseBottleUI(); - yield return cooling.CloseCoolingSystem(); - yield return new WaitForSeconds(1f); - } - } - public struct UfState : IState { public FixState GetState => FixState.UF; @@ -260,8 +221,8 @@ namespace AibisDream.FixSystem public IEnumerator Enter() { var bodyModuleSystem = FixSystemCenter.SystemDic.Get(); - var UFSystem = FixSystemCenter.SystemDic.Get(); - var EyeSystem = FixSystemCenter.SystemDic.Get(); + var ufSystem = FixSystemCenter.SystemDic.Get(); + var eyeSystem = FixSystemCenter.SystemDic.Get(); // 先切BodyModule if (!CameraKit.Instance.EqualToCameraState(CameraEnum.BodyModule)) { @@ -273,20 +234,20 @@ namespace AibisDream.FixSystem // 切换相机 yield return CameraKit.Instance.SwitchCamera(CameraEnum.UF); yield return MainUIController.Instance?.FadeInSync(0.5f); - UFSystem.OpenUFView(); + ufSystem.OpenUFView(); yield return CameraKit.Instance.SwitchCamera(CameraEnum.EyeDeep); - EyeSystem.OnEnter(); + eyeSystem.OnEnter(); yield return MainUIController.Instance?.FadeOutSync(0.5f); } public IEnumerator Exit() { float duration = 0.5f; - var UFSystem = FixSystemCenter.SystemDic.Get(); + var ufSystem = FixSystemCenter.SystemDic.Get(); var eyeSystem = FixSystemCenter.SystemDic.Get(); yield return MainUIController.Instance?.FadeInSync(duration); eyeSystem.OnExit(); - UFSystem.CloseUFView(); + ufSystem.CloseUFView(); yield return CameraKit.Instance.SwitchCamera(CameraEnum.UF); yield return MainUIController.Instance?.FadeOutSync(duration); yield return null; diff --git a/Assets/Scripts/Game Loop/GameLoopManager.cs b/Assets/Scripts/Game Loop/GameLoopManager.cs index f84a06a39..e90a4abec 100644 --- a/Assets/Scripts/Game Loop/GameLoopManager.cs +++ b/Assets/Scripts/Game Loop/GameLoopManager.cs @@ -1,14 +1,7 @@ using System; using System.Collections; -using System.Collections.Generic; -using System.Globalization; -using System.IO; -using System.Linq; -using AibisDream.FixSystem; using AibisDream.Framework; using AibisDream.Kit; -using AibisDream.Utility; -using Newtonsoft.Json.Linq; using UnityEngine; using Yarn.Unity; @@ -16,8 +9,6 @@ namespace AibisDream { public class GameLoopManager : Singleton { - private const int MaxSaveNum = 200; - private static readonly string SaveFilePath = Application.streamingAssetsPath + "/SaveFiles"; private static readonly string TestSaveFilePath = Application.streamingAssetsPath + "/TestSaveFiles"; #region 运行模式相关 @@ -68,6 +59,7 @@ namespace AibisDream // 数据类注册 StorageSystem.Instance.RegisterData(_data); // 场景So事件注册 + _currentTalkSceneSo = new BindProperty(); _currentTalkSceneSo.Register(item => _data.curSceneSoName = item.name); } @@ -143,7 +135,7 @@ namespace AibisDream public void StartDialog() { - DialogController.Instance.StartDialog(_currentTalkSceneSo.Value.yarnProject); + DialogController.Instance.LoadDialog(_currentTalkSceneSo.Value.yarnProject); } #region 重新开始游戏功能 diff --git a/Assets/Scripts/MiniGame/Gear/GearSystem.cs b/Assets/Scripts/MiniGame/Gear/GearSystem.cs index dcccc3811..b483a6d27 100644 --- a/Assets/Scripts/MiniGame/Gear/GearSystem.cs +++ b/Assets/Scripts/MiniGame/Gear/GearSystem.cs @@ -147,7 +147,7 @@ namespace AibisDream { if (_shaftGraph.AllNewGear()) { - DialogController.Instance?.SetVariable("$allNewGear", true); + StorageSystem.Instance?.SetValue("$allNewGear", true); } DialogController.Instance?.StartDialogNode("AllGearsRunning"); } @@ -157,7 +157,7 @@ namespace AibisDream { if (!_isTargetReached) { - DialogController.Instance?.SetVariable("$speedReached", true); + StorageSystem.Instance?.SetValue("$speedReached", true); _isTargetReached = true; } } @@ -166,7 +166,7 @@ namespace AibisDream { if (_isTargetReached) { - DialogController.Instance?.SetVariable("$speedReached", false); + StorageSystem.Instance?.SetValue("$speedReached", false); _isTargetReached = false; } } diff --git a/Assets/Scripts/MiniGame/Gear/Shaft.cs b/Assets/Scripts/MiniGame/Gear/Shaft.cs index d4dc5b0c2..2f7173811 100644 --- a/Assets/Scripts/MiniGame/Gear/Shaft.cs +++ b/Assets/Scripts/MiniGame/Gear/Shaft.cs @@ -109,11 +109,11 @@ namespace AibisDream if (IsDisc) { - DialogController.Instance?.SetVariable("$discIdx", discIdx); + StorageSystem.Instance?.SetValue("$discIdx", discIdx); } // 传当前插入齿轮的Prop - DialogController.Instance?.SetVariable("$curGearProp", childGear.gearProp); + StorageSystem.Instance?.SetValue("$curGearProp", childGear.gearProp); } public void PlugOutGear() diff --git a/Assets/Scripts/MiniGame/Peipei/Eye/EyeSystem.cs b/Assets/Scripts/MiniGame/Peipei/Eye/EyeSystem.cs index 304a5a70e..fa615c1ef 100644 --- a/Assets/Scripts/MiniGame/Peipei/Eye/EyeSystem.cs +++ b/Assets/Scripts/MiniGame/Peipei/Eye/EyeSystem.cs @@ -122,7 +122,7 @@ public class EyeSystem : MonoBehaviour yield break; } - DialogController.Instance.SetVariable("$currentEyeTarget", target.name); + StorageSystem.Instance.SetValue("$currentEyeTarget", target.name); StartCoroutine(EyeEffectFadeOut()); cameraManager.MoveCameraTo(target.targetTransform ? target.targetTransform : target.transform, 1f); diff --git a/Assets/Scripts/FixSystemNew/CoolingMachine.meta b/Assets/StreamingAssets/FMOD.meta similarity index 77% rename from Assets/Scripts/FixSystemNew/CoolingMachine.meta rename to Assets/StreamingAssets/FMOD.meta index 5e448c1e0..d8e3d4d7c 100644 --- a/Assets/Scripts/FixSystemNew/CoolingMachine.meta +++ b/Assets/StreamingAssets/FMOD.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 38ae5aaccd67de644bfd206afaebabfb +guid: 84219fb7895f676499cde7c051e3f830 folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/Assets/StreamingAssets/FMOD/Desktop.meta b/Assets/StreamingAssets/FMOD/Desktop.meta new file mode 100644 index 000000000..08b39cd09 --- /dev/null +++ b/Assets/StreamingAssets/FMOD/Desktop.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 9b3a311a7be201b4bb4f89a12d40c0c9 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: