diff --git a/.gitignore b/.gitignore index 2875a5f..0fd4828 100644 --- a/.gitignore +++ b/.gitignore @@ -99,4 +99,5 @@ crashlytics-build.properties /bin /.omc /.omx -/.dotnet_home \ No newline at end of file +/.dotnet_home +/.dotnet \ No newline at end of file diff --git a/Assets/GameMain/DataTables/UIForm.txt b/Assets/GameMain/DataTables/UIForm.txt index 20d455b..40e4b76 100644 --- a/Assets/GameMain/DataTables/UIForm.txt +++ b/Assets/GameMain/DataTables/UIForm.txt @@ -14,3 +14,4 @@ 107 游戏场景覆盖UI MainOverlayForm Overlay False False 108 AI对话UI AIChatForm Overlay False False 109 章节标题UI ChapterTitleForm Overlay False False + 110 AI对话入口 AIChatEntryForm Top False False diff --git a/Assets/GameMain/Scripts/CustomComponent/CombineComponent.cs b/Assets/GameMain/Scripts/CustomComponent/CombineComponent.cs index 696dd73..072f643 100644 --- a/Assets/GameMain/Scripts/CustomComponent/CombineComponent.cs +++ b/Assets/GameMain/Scripts/CustomComponent/CombineComponent.cs @@ -318,6 +318,7 @@ namespace CustomComponent { slot.SetOccupiedPart(part); part.PlaceToSlot(slot); + HidePlacedPair(slot, part); _placedCount++; AdvanceOrderCursor(); @@ -338,8 +339,6 @@ namespace CustomComponent } _isCompleted = true; - - GameEntry.Event.Fire(this, CombineCompletedEventArgs.Create()); _onPuzzleCompleted.Invoke(); } @@ -371,6 +370,19 @@ namespace CustomComponent GameEntry.Event.Fire(this, CombineFeedbackEventArgs.Create(feedbackType, message)); } + private static void HidePlacedPair(CombineSlot slot, CombineDraggablePart part) + { + if (slot != null && slot.gameObject != null) + { + slot.gameObject.SetActive(false); + } + + if (part != null && part.gameObject != null) + { + part.gameObject.SetActive(false); + } + } + #endregion #region Runtime Context @@ -569,6 +581,7 @@ namespace CustomComponent for (int i = 0; i < _orderedSlots.Count; i++) { CombineSlot slot = _orderedSlots[i]; + slot.gameObject.SetActive(true); slot.BindController(this); slot.ResetSlot(); } @@ -587,6 +600,7 @@ namespace CustomComponent continue; } + part.gameObject.SetActive(true); part.BindController(this); part.CacheSpawnState(); part.ResetToSpawn(); diff --git a/Assets/GameMain/Scripts/UI/View/CombineDraggablePart.cs b/Assets/GameMain/Scripts/UI/View/CombineDraggablePart.cs index 5777d15..e63fbb2 100644 --- a/Assets/GameMain/Scripts/UI/View/CombineDraggablePart.cs +++ b/Assets/GameMain/Scripts/UI/View/CombineDraggablePart.cs @@ -73,6 +73,8 @@ namespace UI private Tween _returnTween; + private Vector2 _dragPointerOffset = Vector2.zero; + #endregion #region Public Query @@ -185,10 +187,11 @@ namespace UI _canvasGroup.blocksRaycasts = false; MoveToDragRoot(); _rectTransform.SetAsLastSibling(); + CacheDragOffset(eventData); } /// - /// 拖拽中:按指针增量更新锚点位置。 + /// 拖拽中:按屏幕坐标映射到父节点局部坐标更新位置。 /// public void OnDrag(PointerEventData eventData) { @@ -197,6 +200,13 @@ namespace UI return; } + if (TryGetDragParent(out RectTransform dragParent) && + TryGetPointerLocalPosition(eventData, dragParent, out Vector2 pointerLocalPosition)) + { + _rectTransform.anchoredPosition = pointerLocalPosition + _dragPointerOffset; + return; + } + _rectTransform.anchoredPosition += eventData.delta; } @@ -216,6 +226,11 @@ namespace UI if (!_isPlaced) { + if (ShouldKeepDroppedInPartArea(eventData)) + { + return; + } + ReturnToSpawnAnimated(); } } @@ -273,6 +288,138 @@ namespace UI } } + private void CacheDragOffset(PointerEventData eventData) + { + _dragPointerOffset = Vector2.zero; + + if (!TryGetDragParent(out RectTransform dragParent)) + { + return; + } + + if (TryGetPointerLocalPosition(eventData, dragParent, out Vector2 pointerLocalPosition)) + { + _dragPointerOffset = _rectTransform.anchoredPosition - pointerLocalPosition; + } + } + + private bool TryGetDragParent(out RectTransform dragParent) + { + dragParent = _rectTransform.parent as RectTransform; + return dragParent != null; + } + + private bool TryGetPointerLocalPosition(PointerEventData eventData, RectTransform targetRect, + out Vector2 localPosition) + { + localPosition = Vector2.zero; + if (eventData == null || targetRect == null) + { + return false; + } + + Camera eventCamera = ResolveEventCamera(eventData); + return RectTransformUtility.ScreenPointToLocalPointInRectangle(targetRect, eventData.position, eventCamera, + out localPosition); + } + + private Camera ResolveEventCamera(PointerEventData eventData) + { + if (eventData != null) + { + if (eventData.pressEventCamera != null) + { + return eventData.pressEventCamera; + } + + if (eventData.enterEventCamera != null) + { + return eventData.enterEventCamera; + } + } + + Canvas canvas = GetComponentInParent(); + if (canvas != null && canvas.renderMode != RenderMode.ScreenSpaceOverlay) + { + return canvas.worldCamera; + } + + return null; + } + + private bool ShouldKeepDroppedInPartArea(PointerEventData eventData) + { + if (eventData == null) + { + return false; + } + + if (!TryGetDragArea(out RectTransform dragArea)) + { + return false; + } + + Camera eventCamera = ResolveEventCamera(eventData); + if (!RectTransformUtility.RectangleContainsScreenPoint(dragArea, eventData.position, eventCamera)) + { + return false; + } + + ClampInsideDragArea(dragArea); + return true; + } + + private bool TryGetDragArea(out RectTransform dragArea) + { + dragArea = null; + if (_controller == null) + { + return false; + } + + dragArea = _controller.GetDragRoot() as RectTransform; + return dragArea != null; + } + + private void ClampInsideDragArea(RectTransform dragArea) + { + if (dragArea == null) + { + return; + } + + Vector2 current = _rectTransform.anchoredPosition; + Rect areaRect = dragArea.rect; + Rect partRect = _rectTransform.rect; + Vector2 pivot = _rectTransform.pivot; + Vector3 scale = _rectTransform.localScale; + + float width = Mathf.Abs(partRect.width * scale.x); + float height = Mathf.Abs(partRect.height * scale.y); + float minX = areaRect.xMin + width * Mathf.Clamp01(pivot.x); + float maxX = areaRect.xMax - width * (1f - Mathf.Clamp01(pivot.x)); + float minY = areaRect.yMin + height * Mathf.Clamp01(pivot.y); + float maxY = areaRect.yMax - height * (1f - Mathf.Clamp01(pivot.y)); + + if (minX > maxX) + { + float centerX = (areaRect.xMin + areaRect.xMax) * 0.5f; + minX = centerX; + maxX = centerX; + } + + if (minY > maxY) + { + float centerY = (areaRect.yMin + areaRect.yMax) * 0.5f; + minY = centerY; + maxY = centerY; + } + + current.x = Mathf.Clamp(current.x, minX, maxX); + current.y = Mathf.Clamp(current.y, minY, maxY); + _rectTransform.anchoredPosition = current; + } + #endregion #region Placement @@ -307,13 +454,7 @@ namespace UI _currentSlot = slot; _isPlaced = true; _isLocked = _lockAfterPlaced; - - RectTransform snapPoint = slot.SnapPoint; - _rectTransform.SetParent(snapPoint != null ? snapPoint : slot.transform, false); - _rectTransform.anchoredPosition = Vector2.zero; - _rectTransform.localRotation = Quaternion.identity; - _rectTransform.localScale = Vector3.one; - _canvasGroup.blocksRaycasts = !_isLocked; + _canvasGroup.blocksRaycasts = false; } /// diff --git a/Assets/GameMain/Scripts/UI/View/CombineForm.cs b/Assets/GameMain/Scripts/UI/View/CombineForm.cs index eab3d21..6acc683 100644 --- a/Assets/GameMain/Scripts/UI/View/CombineForm.cs +++ b/Assets/GameMain/Scripts/UI/View/CombineForm.cs @@ -1,3 +1,4 @@ +using System.Collections; using System.Collections.Generic; using CustomComponent; using Event; @@ -37,8 +38,20 @@ namespace UI [SerializeField] [Range(0f, 1f)] private float _partSpawnMaxYNormalized = 0.9f; + [SerializeField] private float _completeToFinalStageDelay = 0.35f; + + [SerializeField] private float _finalStageToCloseDelay = 0.35f; + private CombineComponent _controller; + private CombineStageOverlay _stageOverlay; + + private Coroutine _completeFlowCoroutine; + + private bool _completionFlowStarted; + + private bool _fireCompletedEventOnClose; + private readonly List _runtimeNodes = new(); #endregion @@ -78,6 +91,10 @@ namespace UI _controller.BindRuntimeContext(_slotRoot, _partRoot); GameEntry.Event.Subscribe(CombineFeedbackEventArgs.EventId, OnFeedbackChanged); + GameEntry.Event.Subscribe(CombineProgressEventArgs.EventId, OnCombineProgressChanged); + + _completionFlowStarted = false; + _fireCompletedEventOnClose = false; if (context.AutoStart) { @@ -104,6 +121,15 @@ namespace UI protected override void OnClose(bool isShutdown, object userData) { GameEntry.Event.Unsubscribe(CombineFeedbackEventArgs.EventId, OnFeedbackChanged); + GameEntry.Event.Unsubscribe(CombineProgressEventArgs.EventId, OnCombineProgressChanged); + + StopCompleteFlow(); + + if (_fireCompletedEventOnClose) + { + _fireCompletedEventOnClose = false; + GameEntry.Event.Fire(this, CombineCompletedEventArgs.Create()); + } if (_controller != null) { @@ -163,6 +189,8 @@ namespace UI private void ClearRuntimeNodes() { + _stageOverlay = null; + for (int i = _runtimeNodes.Count - 1; i >= 0; i--) { GameObject node = _runtimeNodes[i]; @@ -213,6 +241,7 @@ namespace UI CombineStageOverlay stageOverlay = structureNode.GetComponentInChildren(true); if (stageOverlay != null) { + _stageOverlay = stageOverlay; List managedSlots = stageOverlay.GetManagedSlots(); if (managedSlots.Count > 0) { @@ -313,6 +342,7 @@ namespace UI if (rootRect.width <= 0f || rootRect.height <= 0f) { partRect.anchoredPosition = _partStartAnchoredPosition + Vector2.down * (_partVerticalSpacing * index); + ClampAnchoredPositionToPartRoot(partRect); return; } @@ -325,9 +355,69 @@ namespace UI float maxY = Mathf.Lerp(rootRect.yMin, rootRect.yMax, Mathf.Max(_partSpawnMinYNormalized, _partSpawnMaxYNormalized)); + Vector2 size = GetPartSize(partRect); + Vector2 xRange = BuildSafeAxisRange(minX, maxX, rootRect.xMin, rootRect.xMax, size.x, partRect.pivot.x); + Vector2 yRange = BuildSafeAxisRange(minY, maxY, rootRect.yMin, rootRect.yMax, size.y, partRect.pivot.y); + partRect.anchoredPosition = new Vector2( - Random.Range(minX, maxX), - Random.Range(minY, maxY)); + Random.Range(xRange.x, xRange.y), + Random.Range(yRange.x, yRange.y)); + } + + private static Vector2 BuildSafeAxisRange(float desiredMin, float desiredMax, float containerMin, float containerMax, + float partSize, float pivot) + { + float min = Mathf.Min(desiredMin, desiredMax); + float max = Mathf.Max(desiredMin, desiredMax); + + float size = Mathf.Max(0f, partSize); + float safeMin = containerMin + size * Mathf.Clamp01(pivot); + float safeMax = containerMax - size * (1f - Mathf.Clamp01(pivot)); + + if (safeMin > safeMax) + { + float center = (containerMin + containerMax) * 0.5f; + safeMin = center; + safeMax = center; + } + + min = Mathf.Clamp(min, safeMin, safeMax); + max = Mathf.Clamp(max, safeMin, safeMax); + + if (min > max) + { + float temp = min; + min = max; + max = temp; + } + + return new Vector2(min, max); + } + + private static Vector2 GetPartSize(RectTransform partRect) + { + Rect rect = partRect.rect; + Vector3 scale = partRect.localScale; + return new Vector2( + Mathf.Abs(rect.width * scale.x), + Mathf.Abs(rect.height * scale.y)); + } + + private void ClampAnchoredPositionToPartRoot(RectTransform partRect) + { + if (partRect == null || _partRoot == null) + { + return; + } + + Rect rootRect = _partRoot.rect; + Vector2 anchored = partRect.anchoredPosition; + Vector2 size = GetPartSize(partRect); + + Vector2 xRange = BuildSafeAxisRange(anchored.x, anchored.x, rootRect.xMin, rootRect.xMax, size.x, partRect.pivot.x); + Vector2 yRange = BuildSafeAxisRange(anchored.y, anchored.y, rootRect.yMin, rootRect.yMax, size.y, partRect.pivot.y); + + partRect.anchoredPosition = new Vector2(xRange.x, yRange.x); } #endregion @@ -343,6 +433,60 @@ namespace UI } } + private void OnCombineProgressChanged(object sender, GameEventArgs e) + { + if (!(e is CombineProgressEventArgs args)) + { + return; + } + + if (args.TotalSteps <= 0 || args.CurrentStep < args.TotalSteps || _completionFlowStarted) + { + return; + } + + _completionFlowStarted = true; + StopCompleteFlow(); + _completeFlowCoroutine = StartCoroutine(PlayCompleteFlow()); + } + + private IEnumerator PlayCompleteFlow() + { + float delayToFinalStage = Mathf.Max(0f, _completeToFinalStageDelay); + if (delayToFinalStage > 0f) + { + yield return new WaitForSecondsRealtime(delayToFinalStage); + } + + if (_stageOverlay != null && _controller != null) + { + // For N parts, progress displays sprite[N-1]; completion tail uses sprite[N]. + int finalStageIndex = _controller.TotalStep; + _stageOverlay.ApplyOverlayByIndex(finalStageIndex); + } + + float delayToClose = Mathf.Max(0f, _finalStageToCloseDelay); + if (delayToClose > 0f) + { + yield return new WaitForSecondsRealtime(delayToClose); + } + + _fireCompletedEventOnClose = true; + _completeFlowCoroutine = null; + Close(); + } + + private void StopCompleteFlow() + { + if (_completeFlowCoroutine == null) + { + return; + } + + StopCoroutine(_completeFlowCoroutine); + _completeFlowCoroutine = null; + } + #endregion } } diff --git a/Assets/GameMain/Scripts/UI/View/CombineStageOverlay.cs b/Assets/GameMain/Scripts/UI/View/CombineStageOverlay.cs index caee5ba..6420ed8 100644 --- a/Assets/GameMain/Scripts/UI/View/CombineStageOverlay.cs +++ b/Assets/GameMain/Scripts/UI/View/CombineStageOverlay.cs @@ -96,19 +96,35 @@ namespace UI return; } - if (currentStep <= 0 || _stageSprites == null || _stageSprites.Count == 0) + // Keep overlay's initial sprite/layout untouched before any placement. + if (currentStep <= 0) + { + return; + } + + if (_stageSprites == null || _stageSprites.Count == 0) { - _overlayImage.sprite = null; return; } int spriteIndex = Mathf.Clamp(currentStep - 1, 0, _stageSprites.Count - 1); - Sprite sprite = _stageSprites[spriteIndex]; - _overlayImage.sprite = sprite; - if (sprite != null) + ApplyOverlayByIndex(spriteIndex); + } + + public bool ApplyOverlayByIndex(int spriteIndex) + { + if (_overlayImage == null || _stageSprites == null || _stageSprites.Count == 0) { - _overlayImage.SetNativeSize(); + return false; } + + if (spriteIndex < 0 || spriteIndex >= _stageSprites.Count) + { + return false; + } + + _overlayImage.sprite = _stageSprites[spriteIndex]; + return true; } } } diff --git a/Assets/GameMain/StoryDirector/Dialog1005.asset b/Assets/GameMain/StoryDirector/Dialog1005.asset new file mode 100644 index 0000000..61e1ca9 --- /dev/null +++ b/Assets/GameMain/StoryDirector/Dialog1005.asset @@ -0,0 +1,18 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 8e4367863f5042e1b5b0b3b3b7f62f5e, type: 3} + m_Name: Dialog1005 + m_EditorClassIdentifier: + _enabled: 1 + _triggerType: 1 + _triggerId: 1005 + _dialogId: 1006 diff --git a/Assets/GameMain/StoryDirector/Dialog1005.asset.meta b/Assets/GameMain/StoryDirector/Dialog1005.asset.meta new file mode 100644 index 0000000..6349ec8 --- /dev/null +++ b/Assets/GameMain/StoryDirector/Dialog1005.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 70719c1cfdc4d3d4784c3665bb8971f2 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GameMain/StoryDirector/Dialog2004.asset b/Assets/GameMain/StoryDirector/Dialog2004.asset new file mode 100644 index 0000000..08b27c4 --- /dev/null +++ b/Assets/GameMain/StoryDirector/Dialog2004.asset @@ -0,0 +1,18 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 8e4367863f5042e1b5b0b3b3b7f62f5e, type: 3} + m_Name: Dialog2004 + m_EditorClassIdentifier: + _enabled: 1 + _triggerType: 1 + _triggerId: 2004 + _dialogId: 2005 diff --git a/Assets/GameMain/StoryDirector/Dialog2004.asset.meta b/Assets/GameMain/StoryDirector/Dialog2004.asset.meta new file mode 100644 index 0000000..98dbeea --- /dev/null +++ b/Assets/GameMain/StoryDirector/Dialog2004.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: a1399a928de585b4db36dd6971370db1 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GameMain/StoryDirector/Dialog2005.asset b/Assets/GameMain/StoryDirector/Dialog2005.asset index 56808f9..38e49e3 100644 --- a/Assets/GameMain/StoryDirector/Dialog2005.asset +++ b/Assets/GameMain/StoryDirector/Dialog2005.asset @@ -13,6 +13,6 @@ MonoBehaviour: m_Name: Dialog2005 m_EditorClassIdentifier: _enabled: 1 - _triggerType: 1 + _triggerType: 0 _triggerId: 2005 _dialogId: 2006 diff --git a/Assets/GameMain/UI/UIItems/Puzzle1.prefab b/Assets/GameMain/UI/UIItems/Puzzle1.prefab index 26ae198..2f0b730 100644 --- a/Assets/GameMain/UI/UIItems/Puzzle1.prefab +++ b/Assets/GameMain/UI/UIItems/Puzzle1.prefab @@ -107,12 +107,12 @@ RectTransform: m_Children: - {fileID: 2976691118114127848} - {fileID: 1740328780267263940} - - {fileID: 3836746855600990764} - - {fileID: 5792497928833933334} - - {fileID: 2906817591701175206} - - {fileID: 6752727998275489566} - - {fileID: 2012441421303829031} - {fileID: 5822314726620909925} + - {fileID: 2012441421303829031} + - {fileID: 6752727998275489566} + - {fileID: 2906817591701175206} + - {fileID: 5792497928833933334} + - {fileID: 3836746855600990764} m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0.5, y: 0.5} @@ -250,6 +250,11 @@ PrefabInstance: propertyPath: m_IsActive value: 1 objectReference: {fileID: 0} + - target: {fileID: 6042841259353758438, guid: 0bbb3a6d1e6bb8b4a9b4d8f0510d9c63, + type: 3} + propertyPath: m_Color.a + value: 0 + objectReference: {fileID: 0} - target: {fileID: 6311038108332227273, guid: 0bbb3a6d1e6bb8b4a9b4d8f0510d9c63, type: 3} propertyPath: m_Pivot.x @@ -917,11 +922,6 @@ PrefabInstance: propertyPath: m_Name value: Slot 1 objectReference: {fileID: 0} - - target: {fileID: 666986232687351230, guid: 0bbb3a6d1e6bb8b4a9b4d8f0510d9c63, - type: 3} - propertyPath: m_IsActive - value: 1 - objectReference: {fileID: 0} - target: {fileID: 6311038108332227273, guid: 0bbb3a6d1e6bb8b4a9b4d8f0510d9c63, type: 3} propertyPath: m_Pivot.x @@ -1022,29 +1022,7 @@ PrefabInstance: propertyPath: m_LocalEulerAnglesHint.z value: 0 objectReference: {fileID: 0} - - target: {fileID: 8505202863679558386, guid: 0bbb3a6d1e6bb8b4a9b4d8f0510d9c63, - type: 3} - propertyPath: m_Sprite - value: - objectReference: {fileID: -525514452, guid: b996df9807bbd234dbcf6fa7ada6204a, - type: 3} - - target: {fileID: 8505202863679558386, guid: 0bbb3a6d1e6bb8b4a9b4d8f0510d9c63, - type: 3} - propertyPath: m_Color.b - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 8505202863679558386, guid: 0bbb3a6d1e6bb8b4a9b4d8f0510d9c63, - type: 3} - propertyPath: m_Color.g - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 8505202863679558386, guid: 0bbb3a6d1e6bb8b4a9b4d8f0510d9c63, - type: 3} - propertyPath: m_Color.r - value: 1 - objectReference: {fileID: 0} - m_RemovedComponents: - - {fileID: 8505202863679558386, guid: 0bbb3a6d1e6bb8b4a9b4d8f0510d9c63, type: 3} + m_RemovedComponents: [] m_RemovedGameObjects: [] m_AddedGameObjects: [] m_AddedComponents: [] diff --git a/Assets/GameMain/UI/UIItems/Puzzle2.prefab b/Assets/GameMain/UI/UIItems/Puzzle2.prefab index 30d0b21..6869920 100644 --- a/Assets/GameMain/UI/UIItems/Puzzle2.prefab +++ b/Assets/GameMain/UI/UIItems/Puzzle2.prefab @@ -107,12 +107,12 @@ RectTransform: m_Children: - {fileID: 6713220879011963817} - {fileID: 7125203660545100135} - - {fileID: 705482162937796015} - - {fileID: 6459151817217565989} - - {fileID: 2024599515634043569} - - {fileID: 5879187811660410120} - - {fileID: 5376583332104577173} - {fileID: 9157560992434891723} + - {fileID: 5376583332104577173} + - {fileID: 5879187811660410120} + - {fileID: 2024599515634043569} + - {fileID: 6459151817217565989} + - {fileID: 705482162937796015} m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0.5, y: 0.5} diff --git a/Assets/GameMain/UI/UIItems/Slot.prefab b/Assets/GameMain/UI/UIItems/Slot.prefab index a0178fb..24f6926 100644 --- a/Assets/GameMain/UI/UIItems/Slot.prefab +++ b/Assets/GameMain/UI/UIItems/Slot.prefab @@ -11,7 +11,7 @@ GameObject: - component: {fileID: 6311038108332227273} - component: {fileID: 7403865899990918019} - component: {fileID: 3955439386906642274} - - component: {fileID: 8505202863679558386} + - component: {fileID: 6042841259353758438} m_Layer: 5 m_Name: Slot m_TagString: Untagged @@ -54,8 +54,6 @@ MonoBehaviour: _buildOrder: 0 _requireStrictOrder: 1 _snapPoint: {fileID: 6311038108332227273} - _mechanicsExplanation: - _mismatchHint: --- !u!222 &3955439386906642274 CanvasRenderer: m_ObjectHideFlags: 0 @@ -64,7 +62,7 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 666986232687351230} m_CullTransparentMesh: 1 ---- !u!114 &8505202863679558386 +--- !u!114 &6042841259353758438 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -77,7 +75,7 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: m_Material: {fileID: 0} - m_Color: {r: 0, g: 0, b: 0, a: 1} + m_Color: {r: 1, g: 1, b: 1, a: 0} m_RaycastTarget: 1 m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} m_Maskable: 1 diff --git a/Assets/GameMain/UI/UISprites/Puzzle/puzzle1/puzzle1-assemble5.png b/Assets/GameMain/UI/UISprites/Puzzle/puzzle1/puzzle1-assemble5.png index bec49a9..4ab3a7b 100644 Binary files a/Assets/GameMain/UI/UISprites/Puzzle/puzzle1/puzzle1-assemble5.png and b/Assets/GameMain/UI/UISprites/Puzzle/puzzle1/puzzle1-assemble5.png differ diff --git a/Assets/GameMain/UI/UISprites/Puzzle/puzzle1/puzzle1-part1.png.meta b/Assets/GameMain/UI/UISprites/Puzzle/puzzle1/puzzle1-part1.png.meta index b7c7418..1adbf44 100644 --- a/Assets/GameMain/UI/UISprites/Puzzle/puzzle1/puzzle1-part1.png.meta +++ b/Assets/GameMain/UI/UISprites/Puzzle/puzzle1/puzzle1-part1.png.meta @@ -123,7 +123,7 @@ TextureImporter: serializedVersion: 2 sprites: - serializedVersion: 2 - name: puzzle1-part4_0 + name: puzzle1-part1 rect: serializedVersion: 2 x: 258 @@ -131,7 +131,7 @@ TextureImporter: width: 157 height: 380 alignment: 0 - pivot: {x: 0, y: 0} + pivot: {x: 0.5, y: 0.5} border: {x: 0, y: 0, z: 0, w: 0} outline: [] physicsShape: [] @@ -154,7 +154,7 @@ TextureImporter: weights: [] secondaryTextures: [] nameFileIdTable: - puzzle1-part4_0: -525514452 + puzzle1-part1: -525514452 mipmapLimitGroupName: pSDRemoveMatte: 0 userData: diff --git a/Assets/GameMain/UI/UISprites/Puzzle/puzzle1/puzzle1-part2.png.meta b/Assets/GameMain/UI/UISprites/Puzzle/puzzle1/puzzle1-part2.png.meta index f4272a3..a32dd0f 100644 --- a/Assets/GameMain/UI/UISprites/Puzzle/puzzle1/puzzle1-part2.png.meta +++ b/Assets/GameMain/UI/UISprites/Puzzle/puzzle1/puzzle1-part2.png.meta @@ -123,7 +123,7 @@ TextureImporter: serializedVersion: 2 sprites: - serializedVersion: 2 - name: puzzle1-part5_0 + name: puzzle1-part2 rect: serializedVersion: 2 x: 22 @@ -131,7 +131,7 @@ TextureImporter: width: 206 height: 167 alignment: 0 - pivot: {x: 0, y: 0} + pivot: {x: 0.5, y: 0.5} border: {x: 0, y: 0, z: 0, w: 0} outline: [] physicsShape: [] @@ -154,7 +154,7 @@ TextureImporter: weights: [] secondaryTextures: [] nameFileIdTable: - puzzle1-part5_0: -832410263 + puzzle1-part2: -832410263 mipmapLimitGroupName: pSDRemoveMatte: 0 userData: diff --git a/Assets/GameMain/UI/UISprites/Puzzle/puzzle1/puzzle1-part3.png.meta b/Assets/GameMain/UI/UISprites/Puzzle/puzzle1/puzzle1-part3.png.meta index dbe0334..70a4165 100644 --- a/Assets/GameMain/UI/UISprites/Puzzle/puzzle1/puzzle1-part3.png.meta +++ b/Assets/GameMain/UI/UISprites/Puzzle/puzzle1/puzzle1-part3.png.meta @@ -123,7 +123,7 @@ TextureImporter: serializedVersion: 2 sprites: - serializedVersion: 2 - name: puzzle1-part6_0 + name: puzzle1-part3 rect: serializedVersion: 2 x: 452 @@ -131,7 +131,7 @@ TextureImporter: width: 237 height: 159 alignment: 0 - pivot: {x: 0, y: 0} + pivot: {x: 0.5, y: 0.5} border: {x: 0, y: 0, z: 0, w: 0} outline: [] physicsShape: [] @@ -154,7 +154,7 @@ TextureImporter: weights: [] secondaryTextures: [] nameFileIdTable: - puzzle1-part6_0: 1284561599 + puzzle1-part3: 1284561599 mipmapLimitGroupName: pSDRemoveMatte: 0 userData: diff --git a/Assets/GameMain/UI/UISprites/Puzzle/puzzle1/puzzle1-part4.png.meta b/Assets/GameMain/UI/UISprites/Puzzle/puzzle1/puzzle1-part4.png.meta index 5aec91c..a315e06 100644 --- a/Assets/GameMain/UI/UISprites/Puzzle/puzzle1/puzzle1-part4.png.meta +++ b/Assets/GameMain/UI/UISprites/Puzzle/puzzle1/puzzle1-part4.png.meta @@ -123,7 +123,7 @@ TextureImporter: serializedVersion: 2 sprites: - serializedVersion: 2 - name: puzzle1-part3_0 + name: puzzle1-part4 rect: serializedVersion: 2 x: 134 @@ -131,7 +131,7 @@ TextureImporter: width: 434 height: 119 alignment: 0 - pivot: {x: 0, y: 0} + pivot: {x: 0.5, y: 0.5} border: {x: 0, y: 0, z: 0, w: 0} outline: [] physicsShape: [] @@ -154,7 +154,7 @@ TextureImporter: weights: [] secondaryTextures: [] nameFileIdTable: - puzzle1-part3_0: -987589928 + puzzle1-part4: -987589928 mipmapLimitGroupName: pSDRemoveMatte: 0 userData: diff --git a/Assets/GameMain/UI/UISprites/Puzzle/puzzle1/puzzle1-part5.png.meta b/Assets/GameMain/UI/UISprites/Puzzle/puzzle1/puzzle1-part5.png.meta index af1d5bf..6f2e270 100644 --- a/Assets/GameMain/UI/UISprites/Puzzle/puzzle1/puzzle1-part5.png.meta +++ b/Assets/GameMain/UI/UISprites/Puzzle/puzzle1/puzzle1-part5.png.meta @@ -123,7 +123,7 @@ TextureImporter: serializedVersion: 2 sprites: - serializedVersion: 2 - name: puzzle1-part1_0 + name: puzzle1-part5 rect: serializedVersion: 2 x: 117 @@ -131,7 +131,7 @@ TextureImporter: width: 225 height: 162 alignment: 0 - pivot: {x: 0, y: 0} + pivot: {x: 0.5, y: 0.5} border: {x: 0, y: 0, z: 0, w: 0} outline: [] physicsShape: [] @@ -154,7 +154,7 @@ TextureImporter: weights: [] secondaryTextures: [] nameFileIdTable: - puzzle1-part1_0: -1516610160 + puzzle1-part5: -1516610160 mipmapLimitGroupName: pSDRemoveMatte: 0 userData: diff --git a/Assets/GameMain/UI/UISprites/Puzzle/puzzle1/puzzle1-part6.png.meta b/Assets/GameMain/UI/UISprites/Puzzle/puzzle1/puzzle1-part6.png.meta index 87623c0..1976705 100644 --- a/Assets/GameMain/UI/UISprites/Puzzle/puzzle1/puzzle1-part6.png.meta +++ b/Assets/GameMain/UI/UISprites/Puzzle/puzzle1/puzzle1-part6.png.meta @@ -123,7 +123,7 @@ TextureImporter: serializedVersion: 2 sprites: - serializedVersion: 2 - name: puzzle1-part2_0 + name: puzzle1-part6 rect: serializedVersion: 2 x: 356 @@ -131,7 +131,7 @@ TextureImporter: width: 316 height: 153 alignment: 0 - pivot: {x: 0, y: 0} + pivot: {x: 0.5, y: 0.5} border: {x: 0, y: 0, z: 0, w: 0} outline: [] physicsShape: [] @@ -154,7 +154,7 @@ TextureImporter: weights: [] secondaryTextures: [] nameFileIdTable: - puzzle1-part2_0: 1334563188 + puzzle1-part6: 1334563188 mipmapLimitGroupName: pSDRemoveMatte: 0 userData: diff --git a/Assets/Launcher.unity b/Assets/Launcher.unity index 9b22ec7..a9f7755 100644 --- a/Assets/Launcher.unity +++ b/Assets/Launcher.unity @@ -1426,8 +1426,10 @@ MonoBehaviour: - {fileID: 11400000, guid: ca6d8fc1e5685c549abfb652ad07fa31, type: 2} - {fileID: 11400000, guid: 044addf3f9fd75c4b979f732f1d5b270, type: 2} - {fileID: 11400000, guid: 3772a85732f8a6f44a7418878b85b7a5, type: 2} + - {fileID: 11400000, guid: 638ca342190613c40b05e45091988549, type: 2} - {fileID: 11400000, guid: 3f853a1029e766343b69579255e40bbc, type: 2} - {fileID: 11400000, guid: 4439eec25b0603e4abc486862811413a, type: 2} + - {fileID: 11400000, guid: 70719c1cfdc4d3d4784c3665bb8971f2, type: 2} - {fileID: 11400000, guid: 70abcb8196a34ab4293f06f432f45446, type: 2} - {fileID: 11400000, guid: 20a90da7b22b040428da0c9c38c892d0, type: 2} - {fileID: 11400000, guid: 993a30dececf3c849b753dec84f5a6f0, type: 2} diff --git a/数据表/UIForm.txt b/数据表/UIForm.txt index 20d455b..40e4b76 100644 --- a/数据表/UIForm.txt +++ b/数据表/UIForm.txt @@ -14,3 +14,4 @@ 107 游戏场景覆盖UI MainOverlayForm Overlay False False 108 AI对话UI AIChatForm Overlay False False 109 章节标题UI ChapterTitleForm Overlay False False + 110 AI对话入口 AIChatEntryForm Top False False diff --git a/数据表/UIForm.xlsx b/数据表/UIForm.xlsx index be2c6d3..ea64097 100644 Binary files a/数据表/UIForm.xlsx and b/数据表/UIForm.xlsx differ