1. 跑通第一章全部流程 2. 优化拼装玩法体验
This commit is contained in:
parent
113358330c
commit
facfe7a437
|
|
@ -100,3 +100,4 @@ crashlytics-build.properties
|
||||||
/.omc
|
/.omc
|
||||||
/.omx
|
/.omx
|
||||||
/.dotnet_home
|
/.dotnet_home
|
||||||
|
/.dotnet
|
||||||
|
|
@ -14,3 +14,4 @@
|
||||||
107 游戏场景覆盖UI MainOverlayForm Overlay False False
|
107 游戏场景覆盖UI MainOverlayForm Overlay False False
|
||||||
108 AI对话UI AIChatForm Overlay False False
|
108 AI对话UI AIChatForm Overlay False False
|
||||||
109 章节标题UI ChapterTitleForm Overlay False False
|
109 章节标题UI ChapterTitleForm Overlay False False
|
||||||
|
110 AI对话入口 AIChatEntryForm Top False False
|
||||||
|
|
|
||||||
|
|
@ -318,6 +318,7 @@ namespace CustomComponent
|
||||||
{
|
{
|
||||||
slot.SetOccupiedPart(part);
|
slot.SetOccupiedPart(part);
|
||||||
part.PlaceToSlot(slot);
|
part.PlaceToSlot(slot);
|
||||||
|
HidePlacedPair(slot, part);
|
||||||
|
|
||||||
_placedCount++;
|
_placedCount++;
|
||||||
AdvanceOrderCursor();
|
AdvanceOrderCursor();
|
||||||
|
|
@ -338,8 +339,6 @@ namespace CustomComponent
|
||||||
}
|
}
|
||||||
|
|
||||||
_isCompleted = true;
|
_isCompleted = true;
|
||||||
|
|
||||||
GameEntry.Event.Fire(this, CombineCompletedEventArgs.Create());
|
|
||||||
_onPuzzleCompleted.Invoke();
|
_onPuzzleCompleted.Invoke();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -371,6 +370,19 @@ namespace CustomComponent
|
||||||
GameEntry.Event.Fire(this, CombineFeedbackEventArgs.Create(feedbackType, message));
|
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
|
#endregion
|
||||||
|
|
||||||
#region Runtime Context
|
#region Runtime Context
|
||||||
|
|
@ -569,6 +581,7 @@ namespace CustomComponent
|
||||||
for (int i = 0; i < _orderedSlots.Count; i++)
|
for (int i = 0; i < _orderedSlots.Count; i++)
|
||||||
{
|
{
|
||||||
CombineSlot slot = _orderedSlots[i];
|
CombineSlot slot = _orderedSlots[i];
|
||||||
|
slot.gameObject.SetActive(true);
|
||||||
slot.BindController(this);
|
slot.BindController(this);
|
||||||
slot.ResetSlot();
|
slot.ResetSlot();
|
||||||
}
|
}
|
||||||
|
|
@ -587,6 +600,7 @@ namespace CustomComponent
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
part.gameObject.SetActive(true);
|
||||||
part.BindController(this);
|
part.BindController(this);
|
||||||
part.CacheSpawnState();
|
part.CacheSpawnState();
|
||||||
part.ResetToSpawn();
|
part.ResetToSpawn();
|
||||||
|
|
|
||||||
|
|
@ -73,6 +73,8 @@ namespace UI
|
||||||
|
|
||||||
private Tween _returnTween;
|
private Tween _returnTween;
|
||||||
|
|
||||||
|
private Vector2 _dragPointerOffset = Vector2.zero;
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region Public Query
|
#region Public Query
|
||||||
|
|
@ -185,10 +187,11 @@ namespace UI
|
||||||
_canvasGroup.blocksRaycasts = false;
|
_canvasGroup.blocksRaycasts = false;
|
||||||
MoveToDragRoot();
|
MoveToDragRoot();
|
||||||
_rectTransform.SetAsLastSibling();
|
_rectTransform.SetAsLastSibling();
|
||||||
|
CacheDragOffset(eventData);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 拖拽中:按指针增量更新锚点位置。
|
/// 拖拽中:按屏幕坐标映射到父节点局部坐标更新位置。
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public void OnDrag(PointerEventData eventData)
|
public void OnDrag(PointerEventData eventData)
|
||||||
{
|
{
|
||||||
|
|
@ -197,6 +200,13 @@ namespace UI
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (TryGetDragParent(out RectTransform dragParent) &&
|
||||||
|
TryGetPointerLocalPosition(eventData, dragParent, out Vector2 pointerLocalPosition))
|
||||||
|
{
|
||||||
|
_rectTransform.anchoredPosition = pointerLocalPosition + _dragPointerOffset;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
_rectTransform.anchoredPosition += eventData.delta;
|
_rectTransform.anchoredPosition += eventData.delta;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -216,6 +226,11 @@ namespace UI
|
||||||
|
|
||||||
if (!_isPlaced)
|
if (!_isPlaced)
|
||||||
{
|
{
|
||||||
|
if (ShouldKeepDroppedInPartArea(eventData))
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
ReturnToSpawnAnimated();
|
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<Canvas>();
|
||||||
|
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
|
#endregion
|
||||||
|
|
||||||
#region Placement
|
#region Placement
|
||||||
|
|
@ -307,13 +454,7 @@ namespace UI
|
||||||
_currentSlot = slot;
|
_currentSlot = slot;
|
||||||
_isPlaced = true;
|
_isPlaced = true;
|
||||||
_isLocked = _lockAfterPlaced;
|
_isLocked = _lockAfterPlaced;
|
||||||
|
_canvasGroup.blocksRaycasts = false;
|
||||||
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;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,4 @@
|
||||||
|
using System.Collections;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using CustomComponent;
|
using CustomComponent;
|
||||||
using Event;
|
using Event;
|
||||||
|
|
@ -37,8 +38,20 @@ namespace UI
|
||||||
|
|
||||||
[SerializeField] [Range(0f, 1f)] private float _partSpawnMaxYNormalized = 0.9f;
|
[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 CombineComponent _controller;
|
||||||
|
|
||||||
|
private CombineStageOverlay _stageOverlay;
|
||||||
|
|
||||||
|
private Coroutine _completeFlowCoroutine;
|
||||||
|
|
||||||
|
private bool _completionFlowStarted;
|
||||||
|
|
||||||
|
private bool _fireCompletedEventOnClose;
|
||||||
|
|
||||||
private readonly List<GameObject> _runtimeNodes = new();
|
private readonly List<GameObject> _runtimeNodes = new();
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
@ -78,6 +91,10 @@ namespace UI
|
||||||
_controller.BindRuntimeContext(_slotRoot, _partRoot);
|
_controller.BindRuntimeContext(_slotRoot, _partRoot);
|
||||||
|
|
||||||
GameEntry.Event.Subscribe(CombineFeedbackEventArgs.EventId, OnFeedbackChanged);
|
GameEntry.Event.Subscribe(CombineFeedbackEventArgs.EventId, OnFeedbackChanged);
|
||||||
|
GameEntry.Event.Subscribe(CombineProgressEventArgs.EventId, OnCombineProgressChanged);
|
||||||
|
|
||||||
|
_completionFlowStarted = false;
|
||||||
|
_fireCompletedEventOnClose = false;
|
||||||
|
|
||||||
if (context.AutoStart)
|
if (context.AutoStart)
|
||||||
{
|
{
|
||||||
|
|
@ -104,6 +121,15 @@ namespace UI
|
||||||
protected override void OnClose(bool isShutdown, object userData)
|
protected override void OnClose(bool isShutdown, object userData)
|
||||||
{
|
{
|
||||||
GameEntry.Event.Unsubscribe(CombineFeedbackEventArgs.EventId, OnFeedbackChanged);
|
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)
|
if (_controller != null)
|
||||||
{
|
{
|
||||||
|
|
@ -163,6 +189,8 @@ namespace UI
|
||||||
|
|
||||||
private void ClearRuntimeNodes()
|
private void ClearRuntimeNodes()
|
||||||
{
|
{
|
||||||
|
_stageOverlay = null;
|
||||||
|
|
||||||
for (int i = _runtimeNodes.Count - 1; i >= 0; i--)
|
for (int i = _runtimeNodes.Count - 1; i >= 0; i--)
|
||||||
{
|
{
|
||||||
GameObject node = _runtimeNodes[i];
|
GameObject node = _runtimeNodes[i];
|
||||||
|
|
@ -213,6 +241,7 @@ namespace UI
|
||||||
CombineStageOverlay stageOverlay = structureNode.GetComponentInChildren<CombineStageOverlay>(true);
|
CombineStageOverlay stageOverlay = structureNode.GetComponentInChildren<CombineStageOverlay>(true);
|
||||||
if (stageOverlay != null)
|
if (stageOverlay != null)
|
||||||
{
|
{
|
||||||
|
_stageOverlay = stageOverlay;
|
||||||
List<CombineSlot> managedSlots = stageOverlay.GetManagedSlots();
|
List<CombineSlot> managedSlots = stageOverlay.GetManagedSlots();
|
||||||
if (managedSlots.Count > 0)
|
if (managedSlots.Count > 0)
|
||||||
{
|
{
|
||||||
|
|
@ -313,6 +342,7 @@ namespace UI
|
||||||
if (rootRect.width <= 0f || rootRect.height <= 0f)
|
if (rootRect.width <= 0f || rootRect.height <= 0f)
|
||||||
{
|
{
|
||||||
partRect.anchoredPosition = _partStartAnchoredPosition + Vector2.down * (_partVerticalSpacing * index);
|
partRect.anchoredPosition = _partStartAnchoredPosition + Vector2.down * (_partVerticalSpacing * index);
|
||||||
|
ClampAnchoredPositionToPartRoot(partRect);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -325,9 +355,69 @@ namespace UI
|
||||||
float maxY = Mathf.Lerp(rootRect.yMin, rootRect.yMax,
|
float maxY = Mathf.Lerp(rootRect.yMin, rootRect.yMax,
|
||||||
Mathf.Max(_partSpawnMinYNormalized, _partSpawnMaxYNormalized));
|
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(
|
partRect.anchoredPosition = new Vector2(
|
||||||
Random.Range(minX, maxX),
|
Random.Range(xRange.x, xRange.y),
|
||||||
Random.Range(minY, maxY));
|
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
|
#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
|
#endregion
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -96,19 +96,35 @@ namespace UI
|
||||||
return;
|
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;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
int spriteIndex = Mathf.Clamp(currentStep - 1, 0, _stageSprites.Count - 1);
|
int spriteIndex = Mathf.Clamp(currentStep - 1, 0, _stageSprites.Count - 1);
|
||||||
Sprite sprite = _stageSprites[spriteIndex];
|
ApplyOverlayByIndex(spriteIndex);
|
||||||
_overlayImage.sprite = sprite;
|
}
|
||||||
if (sprite != null)
|
|
||||||
|
public bool ApplyOverlayByIndex(int spriteIndex)
|
||||||
{
|
{
|
||||||
_overlayImage.SetNativeSize();
|
if (_overlayImage == null || _stageSprites == null || _stageSprites.Count == 0)
|
||||||
}
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (spriteIndex < 0 || spriteIndex >= _stageSprites.Count)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
_overlayImage.sprite = _stageSprites[spriteIndex];
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
@ -0,0 +1,8 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 70719c1cfdc4d3d4784c3665bb8971f2
|
||||||
|
NativeFormatImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
mainObjectFileID: 11400000
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
|
|
@ -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
|
||||||
|
|
@ -0,0 +1,8 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: a1399a928de585b4db36dd6971370db1
|
||||||
|
NativeFormatImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
mainObjectFileID: 11400000
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
|
|
@ -13,6 +13,6 @@ MonoBehaviour:
|
||||||
m_Name: Dialog2005
|
m_Name: Dialog2005
|
||||||
m_EditorClassIdentifier:
|
m_EditorClassIdentifier:
|
||||||
_enabled: 1
|
_enabled: 1
|
||||||
_triggerType: 1
|
_triggerType: 0
|
||||||
_triggerId: 2005
|
_triggerId: 2005
|
||||||
_dialogId: 2006
|
_dialogId: 2006
|
||||||
|
|
|
||||||
|
|
@ -107,12 +107,12 @@ RectTransform:
|
||||||
m_Children:
|
m_Children:
|
||||||
- {fileID: 2976691118114127848}
|
- {fileID: 2976691118114127848}
|
||||||
- {fileID: 1740328780267263940}
|
- {fileID: 1740328780267263940}
|
||||||
- {fileID: 3836746855600990764}
|
|
||||||
- {fileID: 5792497928833933334}
|
|
||||||
- {fileID: 2906817591701175206}
|
|
||||||
- {fileID: 6752727998275489566}
|
|
||||||
- {fileID: 2012441421303829031}
|
|
||||||
- {fileID: 5822314726620909925}
|
- {fileID: 5822314726620909925}
|
||||||
|
- {fileID: 2012441421303829031}
|
||||||
|
- {fileID: 6752727998275489566}
|
||||||
|
- {fileID: 2906817591701175206}
|
||||||
|
- {fileID: 5792497928833933334}
|
||||||
|
- {fileID: 3836746855600990764}
|
||||||
m_Father: {fileID: 0}
|
m_Father: {fileID: 0}
|
||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
m_AnchorMin: {x: 0.5, y: 0.5}
|
m_AnchorMin: {x: 0.5, y: 0.5}
|
||||||
|
|
@ -250,6 +250,11 @@ PrefabInstance:
|
||||||
propertyPath: m_IsActive
|
propertyPath: m_IsActive
|
||||||
value: 1
|
value: 1
|
||||||
objectReference: {fileID: 0}
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 6042841259353758438, guid: 0bbb3a6d1e6bb8b4a9b4d8f0510d9c63,
|
||||||
|
type: 3}
|
||||||
|
propertyPath: m_Color.a
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
- target: {fileID: 6311038108332227273, guid: 0bbb3a6d1e6bb8b4a9b4d8f0510d9c63,
|
- target: {fileID: 6311038108332227273, guid: 0bbb3a6d1e6bb8b4a9b4d8f0510d9c63,
|
||||||
type: 3}
|
type: 3}
|
||||||
propertyPath: m_Pivot.x
|
propertyPath: m_Pivot.x
|
||||||
|
|
@ -917,11 +922,6 @@ PrefabInstance:
|
||||||
propertyPath: m_Name
|
propertyPath: m_Name
|
||||||
value: Slot 1
|
value: Slot 1
|
||||||
objectReference: {fileID: 0}
|
objectReference: {fileID: 0}
|
||||||
- target: {fileID: 666986232687351230, guid: 0bbb3a6d1e6bb8b4a9b4d8f0510d9c63,
|
|
||||||
type: 3}
|
|
||||||
propertyPath: m_IsActive
|
|
||||||
value: 1
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 6311038108332227273, guid: 0bbb3a6d1e6bb8b4a9b4d8f0510d9c63,
|
- target: {fileID: 6311038108332227273, guid: 0bbb3a6d1e6bb8b4a9b4d8f0510d9c63,
|
||||||
type: 3}
|
type: 3}
|
||||||
propertyPath: m_Pivot.x
|
propertyPath: m_Pivot.x
|
||||||
|
|
@ -1022,29 +1022,7 @@ PrefabInstance:
|
||||||
propertyPath: m_LocalEulerAnglesHint.z
|
propertyPath: m_LocalEulerAnglesHint.z
|
||||||
value: 0
|
value: 0
|
||||||
objectReference: {fileID: 0}
|
objectReference: {fileID: 0}
|
||||||
- target: {fileID: 8505202863679558386, guid: 0bbb3a6d1e6bb8b4a9b4d8f0510d9c63,
|
m_RemovedComponents: []
|
||||||
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_RemovedGameObjects: []
|
m_RemovedGameObjects: []
|
||||||
m_AddedGameObjects: []
|
m_AddedGameObjects: []
|
||||||
m_AddedComponents: []
|
m_AddedComponents: []
|
||||||
|
|
|
||||||
|
|
@ -107,12 +107,12 @@ RectTransform:
|
||||||
m_Children:
|
m_Children:
|
||||||
- {fileID: 6713220879011963817}
|
- {fileID: 6713220879011963817}
|
||||||
- {fileID: 7125203660545100135}
|
- {fileID: 7125203660545100135}
|
||||||
- {fileID: 705482162937796015}
|
|
||||||
- {fileID: 6459151817217565989}
|
|
||||||
- {fileID: 2024599515634043569}
|
|
||||||
- {fileID: 5879187811660410120}
|
|
||||||
- {fileID: 5376583332104577173}
|
|
||||||
- {fileID: 9157560992434891723}
|
- {fileID: 9157560992434891723}
|
||||||
|
- {fileID: 5376583332104577173}
|
||||||
|
- {fileID: 5879187811660410120}
|
||||||
|
- {fileID: 2024599515634043569}
|
||||||
|
- {fileID: 6459151817217565989}
|
||||||
|
- {fileID: 705482162937796015}
|
||||||
m_Father: {fileID: 0}
|
m_Father: {fileID: 0}
|
||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
m_AnchorMin: {x: 0.5, y: 0.5}
|
m_AnchorMin: {x: 0.5, y: 0.5}
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,7 @@ GameObject:
|
||||||
- component: {fileID: 6311038108332227273}
|
- component: {fileID: 6311038108332227273}
|
||||||
- component: {fileID: 7403865899990918019}
|
- component: {fileID: 7403865899990918019}
|
||||||
- component: {fileID: 3955439386906642274}
|
- component: {fileID: 3955439386906642274}
|
||||||
- component: {fileID: 8505202863679558386}
|
- component: {fileID: 6042841259353758438}
|
||||||
m_Layer: 5
|
m_Layer: 5
|
||||||
m_Name: Slot
|
m_Name: Slot
|
||||||
m_TagString: Untagged
|
m_TagString: Untagged
|
||||||
|
|
@ -54,8 +54,6 @@ MonoBehaviour:
|
||||||
_buildOrder: 0
|
_buildOrder: 0
|
||||||
_requireStrictOrder: 1
|
_requireStrictOrder: 1
|
||||||
_snapPoint: {fileID: 6311038108332227273}
|
_snapPoint: {fileID: 6311038108332227273}
|
||||||
_mechanicsExplanation:
|
|
||||||
_mismatchHint:
|
|
||||||
--- !u!222 &3955439386906642274
|
--- !u!222 &3955439386906642274
|
||||||
CanvasRenderer:
|
CanvasRenderer:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
|
|
@ -64,7 +62,7 @@ CanvasRenderer:
|
||||||
m_PrefabAsset: {fileID: 0}
|
m_PrefabAsset: {fileID: 0}
|
||||||
m_GameObject: {fileID: 666986232687351230}
|
m_GameObject: {fileID: 666986232687351230}
|
||||||
m_CullTransparentMesh: 1
|
m_CullTransparentMesh: 1
|
||||||
--- !u!114 &8505202863679558386
|
--- !u!114 &6042841259353758438
|
||||||
MonoBehaviour:
|
MonoBehaviour:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
|
@ -77,7 +75,7 @@ MonoBehaviour:
|
||||||
m_Name:
|
m_Name:
|
||||||
m_EditorClassIdentifier:
|
m_EditorClassIdentifier:
|
||||||
m_Material: {fileID: 0}
|
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_RaycastTarget: 1
|
||||||
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
|
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
|
||||||
m_Maskable: 1
|
m_Maskable: 1
|
||||||
|
|
|
||||||
Binary file not shown.
|
Before Width: | Height: | Size: 387 KiB After Width: | Height: | Size: 256 KiB |
|
|
@ -123,7 +123,7 @@ TextureImporter:
|
||||||
serializedVersion: 2
|
serializedVersion: 2
|
||||||
sprites:
|
sprites:
|
||||||
- serializedVersion: 2
|
- serializedVersion: 2
|
||||||
name: puzzle1-part4_0
|
name: puzzle1-part1
|
||||||
rect:
|
rect:
|
||||||
serializedVersion: 2
|
serializedVersion: 2
|
||||||
x: 258
|
x: 258
|
||||||
|
|
@ -131,7 +131,7 @@ TextureImporter:
|
||||||
width: 157
|
width: 157
|
||||||
height: 380
|
height: 380
|
||||||
alignment: 0
|
alignment: 0
|
||||||
pivot: {x: 0, y: 0}
|
pivot: {x: 0.5, y: 0.5}
|
||||||
border: {x: 0, y: 0, z: 0, w: 0}
|
border: {x: 0, y: 0, z: 0, w: 0}
|
||||||
outline: []
|
outline: []
|
||||||
physicsShape: []
|
physicsShape: []
|
||||||
|
|
@ -154,7 +154,7 @@ TextureImporter:
|
||||||
weights: []
|
weights: []
|
||||||
secondaryTextures: []
|
secondaryTextures: []
|
||||||
nameFileIdTable:
|
nameFileIdTable:
|
||||||
puzzle1-part4_0: -525514452
|
puzzle1-part1: -525514452
|
||||||
mipmapLimitGroupName:
|
mipmapLimitGroupName:
|
||||||
pSDRemoveMatte: 0
|
pSDRemoveMatte: 0
|
||||||
userData:
|
userData:
|
||||||
|
|
|
||||||
|
|
@ -123,7 +123,7 @@ TextureImporter:
|
||||||
serializedVersion: 2
|
serializedVersion: 2
|
||||||
sprites:
|
sprites:
|
||||||
- serializedVersion: 2
|
- serializedVersion: 2
|
||||||
name: puzzle1-part5_0
|
name: puzzle1-part2
|
||||||
rect:
|
rect:
|
||||||
serializedVersion: 2
|
serializedVersion: 2
|
||||||
x: 22
|
x: 22
|
||||||
|
|
@ -131,7 +131,7 @@ TextureImporter:
|
||||||
width: 206
|
width: 206
|
||||||
height: 167
|
height: 167
|
||||||
alignment: 0
|
alignment: 0
|
||||||
pivot: {x: 0, y: 0}
|
pivot: {x: 0.5, y: 0.5}
|
||||||
border: {x: 0, y: 0, z: 0, w: 0}
|
border: {x: 0, y: 0, z: 0, w: 0}
|
||||||
outline: []
|
outline: []
|
||||||
physicsShape: []
|
physicsShape: []
|
||||||
|
|
@ -154,7 +154,7 @@ TextureImporter:
|
||||||
weights: []
|
weights: []
|
||||||
secondaryTextures: []
|
secondaryTextures: []
|
||||||
nameFileIdTable:
|
nameFileIdTable:
|
||||||
puzzle1-part5_0: -832410263
|
puzzle1-part2: -832410263
|
||||||
mipmapLimitGroupName:
|
mipmapLimitGroupName:
|
||||||
pSDRemoveMatte: 0
|
pSDRemoveMatte: 0
|
||||||
userData:
|
userData:
|
||||||
|
|
|
||||||
|
|
@ -123,7 +123,7 @@ TextureImporter:
|
||||||
serializedVersion: 2
|
serializedVersion: 2
|
||||||
sprites:
|
sprites:
|
||||||
- serializedVersion: 2
|
- serializedVersion: 2
|
||||||
name: puzzle1-part6_0
|
name: puzzle1-part3
|
||||||
rect:
|
rect:
|
||||||
serializedVersion: 2
|
serializedVersion: 2
|
||||||
x: 452
|
x: 452
|
||||||
|
|
@ -131,7 +131,7 @@ TextureImporter:
|
||||||
width: 237
|
width: 237
|
||||||
height: 159
|
height: 159
|
||||||
alignment: 0
|
alignment: 0
|
||||||
pivot: {x: 0, y: 0}
|
pivot: {x: 0.5, y: 0.5}
|
||||||
border: {x: 0, y: 0, z: 0, w: 0}
|
border: {x: 0, y: 0, z: 0, w: 0}
|
||||||
outline: []
|
outline: []
|
||||||
physicsShape: []
|
physicsShape: []
|
||||||
|
|
@ -154,7 +154,7 @@ TextureImporter:
|
||||||
weights: []
|
weights: []
|
||||||
secondaryTextures: []
|
secondaryTextures: []
|
||||||
nameFileIdTable:
|
nameFileIdTable:
|
||||||
puzzle1-part6_0: 1284561599
|
puzzle1-part3: 1284561599
|
||||||
mipmapLimitGroupName:
|
mipmapLimitGroupName:
|
||||||
pSDRemoveMatte: 0
|
pSDRemoveMatte: 0
|
||||||
userData:
|
userData:
|
||||||
|
|
|
||||||
|
|
@ -123,7 +123,7 @@ TextureImporter:
|
||||||
serializedVersion: 2
|
serializedVersion: 2
|
||||||
sprites:
|
sprites:
|
||||||
- serializedVersion: 2
|
- serializedVersion: 2
|
||||||
name: puzzle1-part3_0
|
name: puzzle1-part4
|
||||||
rect:
|
rect:
|
||||||
serializedVersion: 2
|
serializedVersion: 2
|
||||||
x: 134
|
x: 134
|
||||||
|
|
@ -131,7 +131,7 @@ TextureImporter:
|
||||||
width: 434
|
width: 434
|
||||||
height: 119
|
height: 119
|
||||||
alignment: 0
|
alignment: 0
|
||||||
pivot: {x: 0, y: 0}
|
pivot: {x: 0.5, y: 0.5}
|
||||||
border: {x: 0, y: 0, z: 0, w: 0}
|
border: {x: 0, y: 0, z: 0, w: 0}
|
||||||
outline: []
|
outline: []
|
||||||
physicsShape: []
|
physicsShape: []
|
||||||
|
|
@ -154,7 +154,7 @@ TextureImporter:
|
||||||
weights: []
|
weights: []
|
||||||
secondaryTextures: []
|
secondaryTextures: []
|
||||||
nameFileIdTable:
|
nameFileIdTable:
|
||||||
puzzle1-part3_0: -987589928
|
puzzle1-part4: -987589928
|
||||||
mipmapLimitGroupName:
|
mipmapLimitGroupName:
|
||||||
pSDRemoveMatte: 0
|
pSDRemoveMatte: 0
|
||||||
userData:
|
userData:
|
||||||
|
|
|
||||||
|
|
@ -123,7 +123,7 @@ TextureImporter:
|
||||||
serializedVersion: 2
|
serializedVersion: 2
|
||||||
sprites:
|
sprites:
|
||||||
- serializedVersion: 2
|
- serializedVersion: 2
|
||||||
name: puzzle1-part1_0
|
name: puzzle1-part5
|
||||||
rect:
|
rect:
|
||||||
serializedVersion: 2
|
serializedVersion: 2
|
||||||
x: 117
|
x: 117
|
||||||
|
|
@ -131,7 +131,7 @@ TextureImporter:
|
||||||
width: 225
|
width: 225
|
||||||
height: 162
|
height: 162
|
||||||
alignment: 0
|
alignment: 0
|
||||||
pivot: {x: 0, y: 0}
|
pivot: {x: 0.5, y: 0.5}
|
||||||
border: {x: 0, y: 0, z: 0, w: 0}
|
border: {x: 0, y: 0, z: 0, w: 0}
|
||||||
outline: []
|
outline: []
|
||||||
physicsShape: []
|
physicsShape: []
|
||||||
|
|
@ -154,7 +154,7 @@ TextureImporter:
|
||||||
weights: []
|
weights: []
|
||||||
secondaryTextures: []
|
secondaryTextures: []
|
||||||
nameFileIdTable:
|
nameFileIdTable:
|
||||||
puzzle1-part1_0: -1516610160
|
puzzle1-part5: -1516610160
|
||||||
mipmapLimitGroupName:
|
mipmapLimitGroupName:
|
||||||
pSDRemoveMatte: 0
|
pSDRemoveMatte: 0
|
||||||
userData:
|
userData:
|
||||||
|
|
|
||||||
|
|
@ -123,7 +123,7 @@ TextureImporter:
|
||||||
serializedVersion: 2
|
serializedVersion: 2
|
||||||
sprites:
|
sprites:
|
||||||
- serializedVersion: 2
|
- serializedVersion: 2
|
||||||
name: puzzle1-part2_0
|
name: puzzle1-part6
|
||||||
rect:
|
rect:
|
||||||
serializedVersion: 2
|
serializedVersion: 2
|
||||||
x: 356
|
x: 356
|
||||||
|
|
@ -131,7 +131,7 @@ TextureImporter:
|
||||||
width: 316
|
width: 316
|
||||||
height: 153
|
height: 153
|
||||||
alignment: 0
|
alignment: 0
|
||||||
pivot: {x: 0, y: 0}
|
pivot: {x: 0.5, y: 0.5}
|
||||||
border: {x: 0, y: 0, z: 0, w: 0}
|
border: {x: 0, y: 0, z: 0, w: 0}
|
||||||
outline: []
|
outline: []
|
||||||
physicsShape: []
|
physicsShape: []
|
||||||
|
|
@ -154,7 +154,7 @@ TextureImporter:
|
||||||
weights: []
|
weights: []
|
||||||
secondaryTextures: []
|
secondaryTextures: []
|
||||||
nameFileIdTable:
|
nameFileIdTable:
|
||||||
puzzle1-part2_0: 1334563188
|
puzzle1-part6: 1334563188
|
||||||
mipmapLimitGroupName:
|
mipmapLimitGroupName:
|
||||||
pSDRemoveMatte: 0
|
pSDRemoveMatte: 0
|
||||||
userData:
|
userData:
|
||||||
|
|
|
||||||
|
|
@ -1426,8 +1426,10 @@ MonoBehaviour:
|
||||||
- {fileID: 11400000, guid: ca6d8fc1e5685c549abfb652ad07fa31, type: 2}
|
- {fileID: 11400000, guid: ca6d8fc1e5685c549abfb652ad07fa31, type: 2}
|
||||||
- {fileID: 11400000, guid: 044addf3f9fd75c4b979f732f1d5b270, type: 2}
|
- {fileID: 11400000, guid: 044addf3f9fd75c4b979f732f1d5b270, type: 2}
|
||||||
- {fileID: 11400000, guid: 3772a85732f8a6f44a7418878b85b7a5, type: 2}
|
- {fileID: 11400000, guid: 3772a85732f8a6f44a7418878b85b7a5, type: 2}
|
||||||
|
- {fileID: 11400000, guid: 638ca342190613c40b05e45091988549, type: 2}
|
||||||
- {fileID: 11400000, guid: 3f853a1029e766343b69579255e40bbc, type: 2}
|
- {fileID: 11400000, guid: 3f853a1029e766343b69579255e40bbc, type: 2}
|
||||||
- {fileID: 11400000, guid: 4439eec25b0603e4abc486862811413a, type: 2}
|
- {fileID: 11400000, guid: 4439eec25b0603e4abc486862811413a, type: 2}
|
||||||
|
- {fileID: 11400000, guid: 70719c1cfdc4d3d4784c3665bb8971f2, type: 2}
|
||||||
- {fileID: 11400000, guid: 70abcb8196a34ab4293f06f432f45446, type: 2}
|
- {fileID: 11400000, guid: 70abcb8196a34ab4293f06f432f45446, type: 2}
|
||||||
- {fileID: 11400000, guid: 20a90da7b22b040428da0c9c38c892d0, type: 2}
|
- {fileID: 11400000, guid: 20a90da7b22b040428da0c9c38c892d0, type: 2}
|
||||||
- {fileID: 11400000, guid: 993a30dececf3c849b753dec84f5a6f0, type: 2}
|
- {fileID: 11400000, guid: 993a30dececf3c849b753dec84f5a6f0, type: 2}
|
||||||
|
|
|
||||||
|
|
@ -14,3 +14,4 @@
|
||||||
107 游戏场景覆盖UI MainOverlayForm Overlay False False
|
107 游戏场景覆盖UI MainOverlayForm Overlay False False
|
||||||
108 AI对话UI AIChatForm Overlay False False
|
108 AI对话UI AIChatForm Overlay False False
|
||||||
109 章节标题UI ChapterTitleForm Overlay False False
|
109 章节标题UI ChapterTitleForm Overlay False False
|
||||||
|
110 AI对话入口 AIChatEntryForm Top False False
|
||||||
|
|
|
||||||
BIN
数据表/UIForm.xlsx
BIN
数据表/UIForm.xlsx
Binary file not shown.
Loading…
Reference in New Issue