迭代拼装玩法与素材
This commit is contained in:
parent
a1b6b4a823
commit
204eb6e4d0
|
|
@ -99,3 +99,4 @@ crashlytics-build.properties
|
||||||
/bin
|
/bin
|
||||||
/.omc
|
/.omc
|
||||||
/.omx
|
/.omx
|
||||||
|
/.dotnet_home
|
||||||
|
|
@ -1,6 +1,5 @@
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using Definition.Enum;
|
|
||||||
using Event;
|
using Event;
|
||||||
using UI;
|
using UI;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
|
|
@ -42,40 +41,11 @@ namespace CustomComponent
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[SerializeField] private Transform _puzzleRoot = null;
|
[SerializeField] private Transform _puzzleRoot = null;
|
||||||
|
|
||||||
/// <summary>
|
[SerializeField] [TextArea(1, 3)] private string _successHint = "拼接成功";
|
||||||
/// 拼装开始时提示文本。
|
|
||||||
/// </summary>
|
|
||||||
[SerializeField]
|
|
||||||
[TextArea(2, 4)]
|
|
||||||
private string _startHint = "Assemble dougong from lower-to-upper and inner-to-outer.";
|
|
||||||
|
|
||||||
/// <summary>
|
[SerializeField] [TextArea(1, 3)] private string _orderErrorHint = "顺序错误";
|
||||||
/// 放置顺序错误提示文本。
|
|
||||||
/// </summary>
|
|
||||||
[SerializeField]
|
|
||||||
[TextArea(2, 4)]
|
|
||||||
private string _wrongOrderHint = "Wrong order. Place lower or inner parts first.";
|
|
||||||
|
|
||||||
/// <summary>
|
[SerializeField] [TextArea(1, 3)] private string _positionErrorHint = "位置错误";
|
||||||
/// 部件不匹配提示文本。
|
|
||||||
/// </summary>
|
|
||||||
[SerializeField]
|
|
||||||
[TextArea(2, 4)]
|
|
||||||
private string _wrongPartHint = "Part does not match this slot.";
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 槽位已占用提示文本。
|
|
||||||
/// </summary>
|
|
||||||
[SerializeField]
|
|
||||||
[TextArea(2, 4)]
|
|
||||||
private string _slotOccupiedHint = "This slot is already occupied.";
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 拼装完成提示文本。
|
|
||||||
/// </summary>
|
|
||||||
[SerializeField]
|
|
||||||
[TextArea(2, 4)]
|
|
||||||
private string _completeHint = "Dougong assembly completed.";
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 当前参与拼装的槽位列表。
|
/// 当前参与拼装的槽位列表。
|
||||||
|
|
@ -229,11 +199,6 @@ namespace CustomComponent
|
||||||
_isPaused = false;
|
_isPaused = false;
|
||||||
|
|
||||||
GameEntry.Event.Fire(this, CombineProgressEventArgs.Create(_placedCount, _orderedSlots.Count));
|
GameEntry.Event.Fire(this, CombineProgressEventArgs.Create(_placedCount, _orderedSlots.Count));
|
||||||
|
|
||||||
if (!string.IsNullOrEmpty(_startHint))
|
|
||||||
{
|
|
||||||
GameEntry.Event.Fire(this, CombineGuideMessageEventArgs.Create(_startHint));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|
@ -311,7 +276,7 @@ namespace CustomComponent
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
RejectPlace(part, _slotOccupiedHint);
|
RejectPlace(part, CombineFeedbackType.PositionError);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -325,8 +290,7 @@ namespace CustomComponent
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
string hint = string.IsNullOrEmpty(slot.MismatchHint) ? _wrongPartHint : slot.MismatchHint;
|
RejectPlace(part, CombineFeedbackType.PositionError);
|
||||||
RejectPlace(part, hint);
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -340,7 +304,7 @@ namespace CustomComponent
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
RejectPlace(part, _wrongOrderHint);
|
RejectPlace(part, CombineFeedbackType.OrderError);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -354,7 +318,7 @@ namespace CustomComponent
|
||||||
|
|
||||||
_placedCount++;
|
_placedCount++;
|
||||||
AdvanceOrderCursor();
|
AdvanceOrderCursor();
|
||||||
PublishExplanation(part, slot);
|
PublishFeedback(CombineFeedbackType.Success);
|
||||||
|
|
||||||
GameEntry.Event.Fire(this, CombineProgressEventArgs.Create(_placedCount, _orderedSlots.Count));
|
GameEntry.Event.Fire(this, CombineProgressEventArgs.Create(_placedCount, _orderedSlots.Count));
|
||||||
TryCompletePuzzle();
|
TryCompletePuzzle();
|
||||||
|
|
@ -372,11 +336,6 @@ namespace CustomComponent
|
||||||
|
|
||||||
_isCompleted = true;
|
_isCompleted = true;
|
||||||
|
|
||||||
if (!string.IsNullOrEmpty(_completeHint))
|
|
||||||
{
|
|
||||||
GameEntry.Event.Fire(this, CombineGuideMessageEventArgs.Create(_completeHint));
|
|
||||||
}
|
|
||||||
|
|
||||||
GameEntry.Event.Fire(this, CombineCompletedEventArgs.Create());
|
GameEntry.Event.Fire(this, CombineCompletedEventArgs.Create());
|
||||||
_onPuzzleCompleted.Invoke();
|
_onPuzzleCompleted.Invoke();
|
||||||
}
|
}
|
||||||
|
|
@ -384,14 +343,29 @@ namespace CustomComponent
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 处理放置失败:部件回弹并提示。
|
/// 处理放置失败:部件回弹并提示。
|
||||||
/// </summary>
|
/// </summary>
|
||||||
private void RejectPlace(CombineDraggablePart part, string hint)
|
private void RejectPlace(CombineDraggablePart part, CombineFeedbackType feedbackType)
|
||||||
{
|
{
|
||||||
part.ReturnToSpawnAnimated();
|
part.ReturnToSpawnAnimated();
|
||||||
|
PublishFeedback(feedbackType);
|
||||||
if (!string.IsNullOrEmpty(hint))
|
|
||||||
{
|
|
||||||
GameEntry.Event.Fire(this, CombineGuideMessageEventArgs.Create(hint));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void PublishFeedback(CombineFeedbackType feedbackType)
|
||||||
|
{
|
||||||
|
string message = string.Empty;
|
||||||
|
switch (feedbackType)
|
||||||
|
{
|
||||||
|
case CombineFeedbackType.Success:
|
||||||
|
message = _successHint;
|
||||||
|
break;
|
||||||
|
case CombineFeedbackType.OrderError:
|
||||||
|
message = _orderErrorHint;
|
||||||
|
break;
|
||||||
|
case CombineFeedbackType.PositionError:
|
||||||
|
message = _positionErrorHint;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
GameEntry.Event.Fire(this, CombineFeedbackEventArgs.Create(feedbackType, message));
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
@ -603,50 +577,6 @@ namespace CustomComponent
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 发布当前放置对应的力学说明文案。
|
|
||||||
/// </summary>
|
|
||||||
private void PublishExplanation(CombineDraggablePart part, CombineSlot slot)
|
|
||||||
{
|
|
||||||
string explanation = slot.MechanicsExplanation;
|
|
||||||
if (string.IsNullOrEmpty(explanation))
|
|
||||||
{
|
|
||||||
explanation = part.MechanicsExplanation;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (string.IsNullOrEmpty(explanation))
|
|
||||||
{
|
|
||||||
explanation = GetDefaultExplanation(part.PartType);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!string.IsNullOrEmpty(explanation))
|
|
||||||
{
|
|
||||||
GameEntry.Event.Fire(this, CombinePartMessageEventArgs.Create(explanation));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 兜底力学说明文案。
|
|
||||||
/// </summary>
|
|
||||||
private static string GetDefaultExplanation(CombinePartType partType)
|
|
||||||
{
|
|
||||||
switch (partType)
|
|
||||||
{
|
|
||||||
case CombinePartType.Dou:
|
|
||||||
return "Dou transfers upper load and works as the base node.";
|
|
||||||
case CombinePartType.Sheng:
|
|
||||||
return "Sheng raises layer height to form the bracket hierarchy.";
|
|
||||||
case CombinePartType.Gong:
|
|
||||||
return "Gong spreads force laterally through overhang.";
|
|
||||||
case CombinePartType.Qiao:
|
|
||||||
return "Qiao continues force transfer to the outer side.";
|
|
||||||
case CombinePartType.Ang:
|
|
||||||
return "Ang uses leverage to redirect eave load inward.";
|
|
||||||
default:
|
|
||||||
return string.Empty;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using UI;
|
using UnityEngine;
|
||||||
|
using UnityEngine.Serialization;
|
||||||
|
|
||||||
namespace CustomComponent
|
namespace CustomComponent
|
||||||
{
|
{
|
||||||
|
|
@ -8,7 +9,7 @@ namespace CustomComponent
|
||||||
public sealed class StoryCombineConfig
|
public sealed class StoryCombineConfig
|
||||||
{
|
{
|
||||||
public bool AutoStart = true;
|
public bool AutoStart = true;
|
||||||
public List<CombineSlotContext> Slots = new List<CombineSlotContext>();
|
public GameObject StructurePrefab;
|
||||||
public List<CombinePartContext> Parts = new List<CombinePartContext>();
|
[FormerlySerializedAs("PartPrefabs")] public List<Sprite> PartSprites = new List<Sprite>();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -5,8 +5,6 @@ namespace CustomComponent
|
||||||
[CreateAssetMenu(menuName = "Story/Directive/Start Combine", fileName = "Directive_StartCombine")]
|
[CreateAssetMenu(menuName = "Story/Directive/Start Combine", fileName = "Directive_StartCombine")]
|
||||||
public sealed class StoryStartCombineDirectiveAsset : StoryDirectiveAsset
|
public sealed class StoryStartCombineDirectiveAsset : StoryDirectiveAsset
|
||||||
{
|
{
|
||||||
[SerializeField] private bool _useDefaultConfig = true;
|
|
||||||
|
|
||||||
[SerializeField] private StoryCombineConfig _combineConfig = new StoryCombineConfig();
|
[SerializeField] private StoryCombineConfig _combineConfig = new StoryCombineConfig();
|
||||||
|
|
||||||
public override string ActionName => "StartCombine";
|
public override string ActionName => "StartCombine";
|
||||||
|
|
@ -18,8 +16,7 @@ namespace CustomComponent
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
StoryCombineConfig config = _useDefaultConfig ? null : _combineConfig;
|
director.ExecuteStartCombine(_combineConfig);
|
||||||
director.ExecuteStartCombine(config);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,5 @@
|
||||||
using System.Collections;
|
using System.Collections;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using Definition.Enum;
|
|
||||||
using Event;
|
using Event;
|
||||||
using UI;
|
using UI;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
|
|
@ -293,22 +292,22 @@ namespace CustomComponent
|
||||||
|
|
||||||
private static CombineFormContext BuildCombineFormContext(StoryCombineConfig config)
|
private static CombineFormContext BuildCombineFormContext(StoryCombineConfig config)
|
||||||
{
|
{
|
||||||
if (config != null && config.Slots != null && config.Slots.Count > 0)
|
if (config == null)
|
||||||
{
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
return new CombineFormContext
|
return new CombineFormContext
|
||||||
{
|
{
|
||||||
Slots = CloneSlots(config.Slots),
|
StructurePrefab = config.StructurePrefab,
|
||||||
Parts = CloneParts(config.Parts),
|
PartSprites = ClonePartSprites(config.PartSprites),
|
||||||
AutoStart = config.AutoStart
|
AutoStart = config.AutoStart
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
return BuildDefaultCombineContext();
|
private static List<Sprite> ClonePartSprites(List<Sprite> source)
|
||||||
}
|
|
||||||
|
|
||||||
private static List<CombineSlotContext> CloneSlots(List<CombineSlotContext> source)
|
|
||||||
{
|
{
|
||||||
var result = new List<CombineSlotContext>();
|
var result = new List<Sprite>();
|
||||||
if (source == null)
|
if (source == null)
|
||||||
{
|
{
|
||||||
return result;
|
return result;
|
||||||
|
|
@ -316,126 +315,10 @@ namespace CustomComponent
|
||||||
|
|
||||||
for (int i = 0; i < source.Count; i++)
|
for (int i = 0; i < source.Count; i++)
|
||||||
{
|
{
|
||||||
CombineSlotContext slot = source[i];
|
result.Add(source[i]);
|
||||||
if (slot == null)
|
|
||||||
{
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
result.Add(new CombineSlotContext
|
|
||||||
{
|
|
||||||
RequiredPartType = slot.RequiredPartType,
|
|
||||||
BuildOrder = slot.BuildOrder,
|
|
||||||
RequireStrictOrder = slot.RequireStrictOrder,
|
|
||||||
AnchoredPosition = slot.AnchoredPosition,
|
|
||||||
SizeDelta = slot.SizeDelta,
|
|
||||||
MechanicsExplanation = slot.MechanicsExplanation,
|
|
||||||
MismatchHint = slot.MismatchHint
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static List<CombinePartContext> CloneParts(List<CombinePartContext> source)
|
|
||||||
{
|
|
||||||
var result = new List<CombinePartContext>();
|
|
||||||
if (source == null)
|
|
||||||
{
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
for (int i = 0; i < source.Count; i++)
|
|
||||||
{
|
|
||||||
CombinePartContext part = source[i];
|
|
||||||
if (part == null)
|
|
||||||
{
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
result.Add(new CombinePartContext
|
|
||||||
{
|
|
||||||
PartType = part.PartType,
|
|
||||||
PartDisplayName = part.PartDisplayName,
|
|
||||||
MechanicsExplanation = part.MechanicsExplanation,
|
|
||||||
LockAfterPlaced = part.LockAfterPlaced
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
private static CombineFormContext BuildDefaultCombineContext()
|
|
||||||
{
|
|
||||||
List<CombineSlotContext> slots = new List<CombineSlotContext>
|
|
||||||
{
|
|
||||||
new CombineSlotContext
|
|
||||||
{
|
|
||||||
RequiredPartType = CombinePartType.Dou,
|
|
||||||
BuildOrder = 0,
|
|
||||||
RequireStrictOrder = true,
|
|
||||||
AnchoredPosition = new Vector2(-320f, -160f),
|
|
||||||
SizeDelta = new Vector2(120f, 120f),
|
|
||||||
MechanicsExplanation = "Dou transfers upper load and works as the base node."
|
|
||||||
},
|
|
||||||
new CombineSlotContext
|
|
||||||
{
|
|
||||||
RequiredPartType = CombinePartType.Sheng,
|
|
||||||
BuildOrder = 1,
|
|
||||||
RequireStrictOrder = true,
|
|
||||||
AnchoredPosition = new Vector2(-320f, -20f),
|
|
||||||
SizeDelta = new Vector2(120f, 120f),
|
|
||||||
MechanicsExplanation = "Sheng raises layer height to form the bracket hierarchy."
|
|
||||||
},
|
|
||||||
new CombineSlotContext
|
|
||||||
{
|
|
||||||
RequiredPartType = CombinePartType.Gong,
|
|
||||||
BuildOrder = 2,
|
|
||||||
RequireStrictOrder = true,
|
|
||||||
AnchoredPosition = new Vector2(-320f, 120f),
|
|
||||||
SizeDelta = new Vector2(120f, 120f),
|
|
||||||
MechanicsExplanation = "Gong spreads force laterally through overhang."
|
|
||||||
},
|
|
||||||
new CombineSlotContext
|
|
||||||
{
|
|
||||||
RequiredPartType = CombinePartType.Qiao,
|
|
||||||
BuildOrder = 3,
|
|
||||||
RequireStrictOrder = true,
|
|
||||||
AnchoredPosition = new Vector2(-160f, 120f),
|
|
||||||
SizeDelta = new Vector2(120f, 120f),
|
|
||||||
MechanicsExplanation = "Qiao continues force transfer to the outer side."
|
|
||||||
},
|
|
||||||
new CombineSlotContext
|
|
||||||
{
|
|
||||||
RequiredPartType = CombinePartType.Ang,
|
|
||||||
BuildOrder = 4,
|
|
||||||
RequireStrictOrder = true,
|
|
||||||
AnchoredPosition = new Vector2(0f, 120f),
|
|
||||||
SizeDelta = new Vector2(120f, 120f),
|
|
||||||
MechanicsExplanation = "Ang uses leverage to redirect eave load inward."
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
List<CombinePartContext> parts = new List<CombinePartContext>
|
|
||||||
{
|
|
||||||
new CombinePartContext
|
|
||||||
{ PartType = CombinePartType.Dou, PartDisplayName = "Dou", LockAfterPlaced = true },
|
|
||||||
new CombinePartContext
|
|
||||||
{ PartType = CombinePartType.Sheng, PartDisplayName = "Sheng", LockAfterPlaced = true },
|
|
||||||
new CombinePartContext
|
|
||||||
{ PartType = CombinePartType.Gong, PartDisplayName = "Gong", LockAfterPlaced = true },
|
|
||||||
new CombinePartContext
|
|
||||||
{ PartType = CombinePartType.Qiao, PartDisplayName = "Qiao", LockAfterPlaced = true },
|
|
||||||
new CombinePartContext
|
|
||||||
{ PartType = CombinePartType.Ang, PartDisplayName = "Ang", LockAfterPlaced = true }
|
|
||||||
};
|
|
||||||
|
|
||||||
return new CombineFormContext
|
|
||||||
{
|
|
||||||
Slots = slots,
|
|
||||||
Parts = parts,
|
|
||||||
AutoStart = true
|
|
||||||
};
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,45 @@
|
||||||
|
using GameFramework;
|
||||||
|
using GameFramework.Event;
|
||||||
|
|
||||||
|
namespace Event
|
||||||
|
{
|
||||||
|
public enum CombineFeedbackType : byte
|
||||||
|
{
|
||||||
|
None = 0,
|
||||||
|
Success = 1,
|
||||||
|
OrderError = 2,
|
||||||
|
PositionError = 3
|
||||||
|
}
|
||||||
|
|
||||||
|
public class CombineFeedbackEventArgs : GameEventArgs
|
||||||
|
{
|
||||||
|
public static readonly int EventId = typeof(CombineFeedbackEventArgs).GetHashCode();
|
||||||
|
|
||||||
|
public override int Id => EventId;
|
||||||
|
|
||||||
|
public CombineFeedbackType FeedbackType { get; private set; }
|
||||||
|
|
||||||
|
public string Message { get; private set; }
|
||||||
|
|
||||||
|
public CombineFeedbackEventArgs()
|
||||||
|
{
|
||||||
|
FeedbackType = CombineFeedbackType.None;
|
||||||
|
Message = string.Empty;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static CombineFeedbackEventArgs Create(CombineFeedbackType feedbackType, string message)
|
||||||
|
{
|
||||||
|
var args = ReferencePool.Acquire<CombineFeedbackEventArgs>();
|
||||||
|
|
||||||
|
args.FeedbackType = feedbackType;
|
||||||
|
args.Message = message ?? string.Empty;
|
||||||
|
return args;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void Clear()
|
||||||
|
{
|
||||||
|
FeedbackType = CombineFeedbackType.None;
|
||||||
|
Message = string.Empty;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
fileFormatVersion: 2
|
fileFormatVersion: 2
|
||||||
guid: 82f303529f5b4b040845223f97a66cfa
|
guid: 760eb8da887f4ab9918f01a43ca40b59
|
||||||
MonoImporter:
|
MonoImporter:
|
||||||
externalObjects: {}
|
externalObjects: {}
|
||||||
serializedVersion: 2
|
serializedVersion: 2
|
||||||
|
|
@ -1,32 +0,0 @@
|
||||||
using GameFramework;
|
|
||||||
using GameFramework.Event;
|
|
||||||
|
|
||||||
namespace Event
|
|
||||||
{
|
|
||||||
public class CombineGuideMessageEventArgs : GameEventArgs
|
|
||||||
{
|
|
||||||
public static readonly int EventId = typeof(CombineGuideMessageEventArgs).GetHashCode();
|
|
||||||
|
|
||||||
public override int Id => EventId;
|
|
||||||
|
|
||||||
public string Message { get; private set; }
|
|
||||||
|
|
||||||
public CombineGuideMessageEventArgs()
|
|
||||||
{
|
|
||||||
Message = "";
|
|
||||||
}
|
|
||||||
|
|
||||||
public static CombineGuideMessageEventArgs Create(string message)
|
|
||||||
{
|
|
||||||
var args = ReferencePool.Acquire<CombineGuideMessageEventArgs>();
|
|
||||||
|
|
||||||
args.Message = message;
|
|
||||||
return args;
|
|
||||||
}
|
|
||||||
|
|
||||||
public override void Clear()
|
|
||||||
{
|
|
||||||
Message = "";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,3 +0,0 @@
|
||||||
fileFormatVersion: 2
|
|
||||||
guid: 7d6ccdc983514de981ac731659f6fa0e
|
|
||||||
timeCreated: 1770510601
|
|
||||||
|
|
@ -1,32 +0,0 @@
|
||||||
using GameFramework;
|
|
||||||
using GameFramework.Event;
|
|
||||||
|
|
||||||
namespace Event
|
|
||||||
{
|
|
||||||
public class CombinePartMessageEventArgs : GameEventArgs
|
|
||||||
{
|
|
||||||
public static readonly int EventId = typeof(CombinePartMessageEventArgs).GetHashCode();
|
|
||||||
|
|
||||||
public override int Id => EventId;
|
|
||||||
|
|
||||||
public string Message { get; private set; }
|
|
||||||
|
|
||||||
public CombinePartMessageEventArgs()
|
|
||||||
{
|
|
||||||
Message = "";
|
|
||||||
}
|
|
||||||
|
|
||||||
public static CombinePartMessageEventArgs Create(string message)
|
|
||||||
{
|
|
||||||
var args = ReferencePool.Acquire<CombinePartMessageEventArgs>();
|
|
||||||
|
|
||||||
args.Message = message;
|
|
||||||
return args;
|
|
||||||
}
|
|
||||||
|
|
||||||
public override void Clear()
|
|
||||||
{
|
|
||||||
Message = "";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,3 +0,0 @@
|
||||||
fileFormatVersion: 2
|
|
||||||
guid: fd83ff85d4a8443db7a9cba10c02529f
|
|
||||||
timeCreated: 1770510848
|
|
||||||
|
|
@ -1,8 +1,5 @@
|
||||||
using Definition.Enum;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using CustomComponent;
|
using CustomComponent;
|
||||||
using UI;
|
using UI;
|
||||||
using UnityEngine;
|
|
||||||
using ProcedureOwner = GameFramework.Fsm.IFsm<GameFramework.Procedure.IProcedureManager>;
|
using ProcedureOwner = GameFramework.Fsm.IFsm<GameFramework.Procedure.IProcedureManager>;
|
||||||
|
|
||||||
namespace Procedure
|
namespace Procedure
|
||||||
|
|
@ -75,84 +72,5 @@ namespace Procedure
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region Other Methods
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 构建测试用关卡上下文(槽位、部件与自动开始配置)。
|
|
||||||
/// </summary>
|
|
||||||
private static CombineFormContext BuildTestOpenData()
|
|
||||||
{
|
|
||||||
List<CombineSlotContext> slots = new List<CombineSlotContext>
|
|
||||||
{
|
|
||||||
new CombineSlotContext
|
|
||||||
{
|
|
||||||
RequiredPartType = CombinePartType.Dou,
|
|
||||||
BuildOrder = 0,
|
|
||||||
RequireStrictOrder = true,
|
|
||||||
AnchoredPosition = new Vector2(-320f, -160f),
|
|
||||||
SizeDelta = new Vector2(120f, 120f),
|
|
||||||
MechanicsExplanation = "Dou transfers upper load and works as the base node."
|
|
||||||
},
|
|
||||||
new CombineSlotContext
|
|
||||||
{
|
|
||||||
RequiredPartType = CombinePartType.Sheng,
|
|
||||||
BuildOrder = 1,
|
|
||||||
RequireStrictOrder = true,
|
|
||||||
AnchoredPosition = new Vector2(-320f, -20f),
|
|
||||||
SizeDelta = new Vector2(120f, 120f),
|
|
||||||
MechanicsExplanation = "Sheng raises layer height to form the bracket hierarchy."
|
|
||||||
},
|
|
||||||
new CombineSlotContext
|
|
||||||
{
|
|
||||||
RequiredPartType = CombinePartType.Gong,
|
|
||||||
BuildOrder = 2,
|
|
||||||
RequireStrictOrder = true,
|
|
||||||
AnchoredPosition = new Vector2(-320f, 120f),
|
|
||||||
SizeDelta = new Vector2(120f, 120f),
|
|
||||||
MechanicsExplanation = "Gong spreads force laterally through overhang."
|
|
||||||
},
|
|
||||||
new CombineSlotContext
|
|
||||||
{
|
|
||||||
RequiredPartType = CombinePartType.Qiao,
|
|
||||||
BuildOrder = 3,
|
|
||||||
RequireStrictOrder = true,
|
|
||||||
AnchoredPosition = new Vector2(-160f, 120f),
|
|
||||||
SizeDelta = new Vector2(120f, 120f),
|
|
||||||
MechanicsExplanation = "Qiao continues force transfer to the outer side."
|
|
||||||
},
|
|
||||||
new CombineSlotContext
|
|
||||||
{
|
|
||||||
RequiredPartType = CombinePartType.Ang,
|
|
||||||
BuildOrder = 4,
|
|
||||||
RequireStrictOrder = true,
|
|
||||||
AnchoredPosition = new Vector2(0f, 120f),
|
|
||||||
SizeDelta = new Vector2(120f, 120f),
|
|
||||||
MechanicsExplanation = "Ang uses leverage to redirect eave load inward."
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
List<CombinePartContext> parts = new List<CombinePartContext>
|
|
||||||
{
|
|
||||||
new CombinePartContext
|
|
||||||
{ PartType = CombinePartType.Dou, PartDisplayName = "Dou", LockAfterPlaced = true },
|
|
||||||
new CombinePartContext
|
|
||||||
{ PartType = CombinePartType.Sheng, PartDisplayName = "Sheng", LockAfterPlaced = true },
|
|
||||||
new CombinePartContext
|
|
||||||
{ PartType = CombinePartType.Gong, PartDisplayName = "Gong", LockAfterPlaced = true },
|
|
||||||
new CombinePartContext
|
|
||||||
{ PartType = CombinePartType.Qiao, PartDisplayName = "Qiao", LockAfterPlaced = true },
|
|
||||||
new CombinePartContext
|
|
||||||
{ PartType = CombinePartType.Ang, PartDisplayName = "Ang", LockAfterPlaced = true }
|
|
||||||
};
|
|
||||||
|
|
||||||
return new CombineFormContext
|
|
||||||
{
|
|
||||||
Slots = slots,
|
|
||||||
Parts = parts,
|
|
||||||
AutoStart = true
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,3 @@
|
||||||
using System.Collections;
|
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
|
|
||||||
|
|
@ -10,14 +9,14 @@ namespace UI
|
||||||
public sealed class CombineFormContext : UIContext
|
public sealed class CombineFormContext : UIContext
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Slot definitions. Position and order are provided externally.
|
/// Assembled structure/silhouette prefab. Slots are read directly from this prefab.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public List<CombineSlotContext> Slots;
|
public GameObject StructurePrefab;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Optional part definitions. When null/empty, parts are derived from slots.
|
/// Part sprites spawned on the right panel.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public List<CombinePartContext> Parts;
|
public List<Sprite> PartSprites = new List<Sprite>();
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Auto start puzzle after runtime nodes are generated.
|
/// Auto start puzzle after runtime nodes are generated.
|
||||||
|
|
|
||||||
|
|
@ -1,21 +0,0 @@
|
||||||
using System;
|
|
||||||
using Definition.Enum;
|
|
||||||
using UnityEngine;
|
|
||||||
|
|
||||||
namespace UI
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// Runtime part data passed from external system.
|
|
||||||
/// </summary>
|
|
||||||
[Serializable]
|
|
||||||
public sealed class CombinePartContext
|
|
||||||
{
|
|
||||||
public CombinePartType PartType = CombinePartType.Dou;
|
|
||||||
|
|
||||||
public string PartDisplayName = "Dou";
|
|
||||||
|
|
||||||
public string MechanicsExplanation = string.Empty;
|
|
||||||
|
|
||||||
public bool LockAfterPlaced = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,28 +0,0 @@
|
||||||
using System;
|
|
||||||
using Definition.Enum;
|
|
||||||
using UnityEngine;
|
|
||||||
|
|
||||||
namespace UI
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// Runtime slot data passed from external system.
|
|
||||||
/// </summary>
|
|
||||||
[Serializable]
|
|
||||||
public sealed class CombineSlotContext
|
|
||||||
{
|
|
||||||
public CombinePartType RequiredPartType = CombinePartType.Dou;
|
|
||||||
|
|
||||||
public int BuildOrder = 0;
|
|
||||||
|
|
||||||
public bool RequireStrictOrder = true;
|
|
||||||
|
|
||||||
public Vector2 AnchoredPosition = Vector2.zero;
|
|
||||||
|
|
||||||
public Vector2 SizeDelta = new Vector2(120f, 120f);
|
|
||||||
|
|
||||||
public string MechanicsExplanation = string.Empty;
|
|
||||||
|
|
||||||
public string MismatchHint = string.Empty;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
@ -3,6 +3,7 @@ using DG.Tweening;
|
||||||
using Definition.Enum;
|
using Definition.Enum;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
using UnityEngine.EventSystems;
|
using UnityEngine.EventSystems;
|
||||||
|
using UnityEngine.UI;
|
||||||
|
|
||||||
namespace UI
|
namespace UI
|
||||||
{
|
{
|
||||||
|
|
@ -16,16 +17,14 @@ namespace UI
|
||||||
|
|
||||||
[SerializeField] private CombinePartType _partType = CombinePartType.Dou;
|
[SerializeField] private CombinePartType _partType = CombinePartType.Dou;
|
||||||
|
|
||||||
[SerializeField] private string _partDisplayName = "Dou";
|
|
||||||
|
|
||||||
[SerializeField] [TextArea(2, 4)] private string _mechanicsExplanation = string.Empty;
|
|
||||||
|
|
||||||
[SerializeField] private bool _lockAfterPlaced = true;
|
[SerializeField] private bool _lockAfterPlaced = true;
|
||||||
|
|
||||||
[SerializeField] private RectTransform _rectTransform;
|
[SerializeField] private RectTransform _rectTransform;
|
||||||
|
|
||||||
[SerializeField] private CanvasGroup _canvasGroup;
|
[SerializeField] private CanvasGroup _canvasGroup;
|
||||||
|
|
||||||
|
[SerializeField] private Image _partImage;
|
||||||
|
|
||||||
[SerializeField] private float _defaultScaleMultiplier = 0.8f;
|
[SerializeField] private float _defaultScaleMultiplier = 0.8f;
|
||||||
|
|
||||||
[SerializeField] private float _hoverScaleMultiplier = 1f;
|
[SerializeField] private float _hoverScaleMultiplier = 1f;
|
||||||
|
|
@ -80,8 +79,6 @@ namespace UI
|
||||||
|
|
||||||
public CombinePartType PartType => _partType;
|
public CombinePartType PartType => _partType;
|
||||||
|
|
||||||
public string MechanicsExplanation => _mechanicsExplanation;
|
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region Unity Lifecycle
|
#region Unity Lifecycle
|
||||||
|
|
@ -120,17 +117,23 @@ namespace UI
|
||||||
_controller = controller;
|
_controller = controller;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
public void ConfigureRuntime(CombinePartType partType, Sprite sprite)
|
||||||
/// 使用运行时数据初始化部件配置。
|
|
||||||
/// </summary>
|
|
||||||
public void Initialize(CombinePartContext data)
|
|
||||||
{
|
{
|
||||||
_partType = data.PartType;
|
_partType = partType;
|
||||||
_partDisplayName = string.IsNullOrEmpty(data.PartDisplayName)
|
|
||||||
? data.PartType.ToString()
|
if (_partImage == null)
|
||||||
: data.PartDisplayName;
|
{
|
||||||
_mechanicsExplanation = data.MechanicsExplanation ?? string.Empty;
|
_partImage = GetComponentInChildren<Image>(true);
|
||||||
_lockAfterPlaced = data.LockAfterPlaced;
|
}
|
||||||
|
|
||||||
|
if (_partImage != null)
|
||||||
|
{
|
||||||
|
_partImage.sprite = sprite;
|
||||||
|
if (sprite != null)
|
||||||
|
{
|
||||||
|
_partImage.SetNativeSize();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,7 @@ using Event;
|
||||||
using GameFramework.Event;
|
using GameFramework.Event;
|
||||||
using TMPro;
|
using TMPro;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
|
using UnityEngine.Serialization;
|
||||||
using UnityGameFramework.Runtime;
|
using UnityGameFramework.Runtime;
|
||||||
|
|
||||||
namespace UI
|
namespace UI
|
||||||
|
|
@ -15,23 +16,14 @@ namespace UI
|
||||||
{
|
{
|
||||||
#region Property
|
#region Property
|
||||||
|
|
||||||
[SerializeField] private CombineComponent _controller;
|
|
||||||
|
|
||||||
[SerializeField] private RectTransform _slotRoot;
|
[SerializeField] private RectTransform _slotRoot;
|
||||||
|
|
||||||
[SerializeField] private RectTransform _partRoot;
|
[SerializeField] private RectTransform _partRoot;
|
||||||
|
|
||||||
[SerializeField] private CombineSlot _slotPrefab;
|
|
||||||
|
|
||||||
[SerializeField] private CombineDraggablePart _partPrefab;
|
[SerializeField] private CombineDraggablePart _partPrefab;
|
||||||
|
|
||||||
[SerializeField] private TMP_Text _guideText;
|
[FormerlySerializedAs("_progressText")] [SerializeField]
|
||||||
|
private TMP_Text _hintText;
|
||||||
[SerializeField] private TMP_Text _explanationText;
|
|
||||||
|
|
||||||
[SerializeField] private TMP_Text _progressText;
|
|
||||||
|
|
||||||
[SerializeField] private string _progressFormat = "{0}/{1}";
|
|
||||||
|
|
||||||
[SerializeField] private Vector2 _partStartAnchoredPosition = new(0f, -40f);
|
[SerializeField] private Vector2 _partStartAnchoredPosition = new(0f, -40f);
|
||||||
|
|
||||||
|
|
@ -45,6 +37,8 @@ namespace UI
|
||||||
|
|
||||||
[SerializeField] [Range(0f, 1f)] private float _partSpawnMaxYNormalized = 0.9f;
|
[SerializeField] [Range(0f, 1f)] private float _partSpawnMaxYNormalized = 0.9f;
|
||||||
|
|
||||||
|
private CombineComponent _controller;
|
||||||
|
|
||||||
private readonly List<GameObject> _runtimeNodes = new();
|
private readonly List<GameObject> _runtimeNodes = new();
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
@ -74,29 +68,21 @@ namespace UI
|
||||||
|
|
||||||
if (userData is CombineFormContext context)
|
if (userData is CombineFormContext context)
|
||||||
{
|
{
|
||||||
if (context.Slots.Count == 0)
|
if (!CanBuildContext(context))
|
||||||
{
|
{
|
||||||
Log.Warning("CombineMvcForm open failed. Slot model is empty.");
|
Log.Warning("CombineMvcForm open failed. StructurePrefab/PartSprites is invalid.");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
Build(context);
|
Build(context);
|
||||||
_controller.BindRuntimeContext(_slotRoot, _partRoot);
|
_controller.BindRuntimeContext(_slotRoot, _partRoot);
|
||||||
|
|
||||||
GameEntry.Event.Subscribe(CombineGuideMessageEventArgs.EventId, OnGuideMessageChanged);
|
GameEntry.Event.Subscribe(CombineFeedbackEventArgs.EventId, OnFeedbackChanged);
|
||||||
GameEntry.Event.Subscribe(CombinePartMessageEventArgs.EventId, OnPartExplained);
|
|
||||||
GameEntry.Event.Subscribe(CombineProgressEventArgs.EventId, OnProgressChanged);
|
|
||||||
GameEntry.Event.Subscribe(CombineCompletedEventArgs.EventId, OnPuzzleCompleted);
|
|
||||||
|
|
||||||
if (context.AutoStart)
|
if (context.AutoStart)
|
||||||
{
|
{
|
||||||
_controller.StartPuzzle();
|
_controller.StartPuzzle();
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
GameEntry.Event.Fire(this,
|
|
||||||
CombineProgressEventArgs.Create(_controller.CurrentStep, _controller.TotalStep));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
@ -104,12 +90,21 @@ namespace UI
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static bool CanBuildContext(CombineFormContext context)
|
||||||
|
{
|
||||||
|
if (context == null)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool hasStructurePrefab = context.StructurePrefab != null;
|
||||||
|
bool hasPartSprites = context.PartSprites != null && context.PartSprites.Count > 0;
|
||||||
|
return hasStructurePrefab && hasPartSprites;
|
||||||
|
}
|
||||||
|
|
||||||
protected override void OnClose(bool isShutdown, object userData)
|
protected override void OnClose(bool isShutdown, object userData)
|
||||||
{
|
{
|
||||||
GameEntry.Event.Unsubscribe(CombineGuideMessageEventArgs.EventId, OnGuideMessageChanged);
|
GameEntry.Event.Unsubscribe(CombineFeedbackEventArgs.EventId, OnFeedbackChanged);
|
||||||
GameEntry.Event.Unsubscribe(CombinePartMessageEventArgs.EventId, OnPartExplained);
|
|
||||||
GameEntry.Event.Unsubscribe(CombineProgressEventArgs.EventId, OnProgressChanged);
|
|
||||||
GameEntry.Event.Unsubscribe(CombineCompletedEventArgs.EventId, OnPuzzleCompleted);
|
|
||||||
|
|
||||||
if (_controller != null)
|
if (_controller != null)
|
||||||
{
|
{
|
||||||
|
|
@ -183,55 +178,128 @@ namespace UI
|
||||||
|
|
||||||
private void ResetTexts()
|
private void ResetTexts()
|
||||||
{
|
{
|
||||||
GameEntry.Event.Fire(this, CombineGuideMessageEventArgs.Create(string.Empty));
|
if (_hintText != null)
|
||||||
GameEntry.Event.Fire(this, CombinePartMessageEventArgs.Create(string.Empty));
|
{
|
||||||
GameEntry.Event.Fire(this, CombineProgressEventArgs.Create(0, 0));
|
_hintText.text = string.Empty;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void Build(CombineFormContext context)
|
private void Build(CombineFormContext context)
|
||||||
{
|
{
|
||||||
ClearRuntimeNodes();
|
ClearRuntimeNodes();
|
||||||
|
|
||||||
foreach (var slotData in context.Slots)
|
List<CombineSlot> runtimeSlots = BuildSlots(context);
|
||||||
|
if (runtimeSlots.Count == 0)
|
||||||
{
|
{
|
||||||
CombineSlot slot = Instantiate(_slotPrefab, _slotRoot, false);
|
Log.Warning("CombineMvcForm build failed. No CombineSlot found in structure prefab.");
|
||||||
slot.Initialize(slotData);
|
return;
|
||||||
slot.SetSnapPoint(slot.transform as RectTransform);
|
|
||||||
_runtimeNodes.Add(slot.gameObject);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
List<CombinePartContext> partContexts = BuildPartContextList(context);
|
List<Sprite> partSprites = ClonePartSprites(context.PartSprites);
|
||||||
for (int i = 0; i < partContexts.Count; i++)
|
BuildParts(partSprites, runtimeSlots);
|
||||||
|
}
|
||||||
|
|
||||||
|
private List<CombineSlot> BuildSlots(CombineFormContext context)
|
||||||
{
|
{
|
||||||
CombinePartContext partData = partContexts[i];
|
var runtimeSlots = new List<CombineSlot>();
|
||||||
|
if (context.StructurePrefab == null)
|
||||||
|
{
|
||||||
|
return runtimeSlots;
|
||||||
|
}
|
||||||
|
|
||||||
|
GameObject structureNode = Instantiate(context.StructurePrefab, _slotRoot, false);
|
||||||
|
CenterStructureNode(structureNode);
|
||||||
|
_runtimeNodes.Add(structureNode);
|
||||||
|
|
||||||
|
CombineStageOverlay stageOverlay = structureNode.GetComponentInChildren<CombineStageOverlay>(true);
|
||||||
|
if (stageOverlay != null)
|
||||||
|
{
|
||||||
|
List<CombineSlot> managedSlots = stageOverlay.GetManagedSlots();
|
||||||
|
if (managedSlots.Count > 0)
|
||||||
|
{
|
||||||
|
return managedSlots;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
CombineSlot[] structureSlots = structureNode.GetComponentsInChildren<CombineSlot>(true);
|
||||||
|
for (int i = 0; i < structureSlots.Length; i++)
|
||||||
|
{
|
||||||
|
CombineSlot slot = structureSlots[i];
|
||||||
|
if (slot != null)
|
||||||
|
{
|
||||||
|
runtimeSlots.Add(slot);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return runtimeSlots;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void BuildParts(List<Sprite> partSprites, List<CombineSlot> runtimeSlots)
|
||||||
|
{
|
||||||
|
if (_partPrefab == null)
|
||||||
|
{
|
||||||
|
Log.Warning("CombineMvcForm build failed. Part prefab is missing.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
List<CombineSlot> orderedSlots = new List<CombineSlot>(runtimeSlots);
|
||||||
|
orderedSlots.Sort((a, b) => a.BuildOrder.CompareTo(b.BuildOrder));
|
||||||
|
|
||||||
|
int spawnCount = Mathf.Min(partSprites.Count, orderedSlots.Count);
|
||||||
|
if (partSprites.Count != orderedSlots.Count)
|
||||||
|
{
|
||||||
|
Log.Warning("CombineMvcForm build mismatch. partSprites={0}, slots={1}.", partSprites.Count.ToString(),
|
||||||
|
orderedSlots.Count.ToString());
|
||||||
|
}
|
||||||
|
|
||||||
|
for (int i = 0; i < spawnCount; i++)
|
||||||
|
{
|
||||||
|
CombineSlot slot = orderedSlots[i];
|
||||||
|
if (slot == null)
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
CombineDraggablePart part = Instantiate(_partPrefab, _partRoot, false);
|
CombineDraggablePart part = Instantiate(_partPrefab, _partRoot, false);
|
||||||
part.Initialize(partData);
|
part.ConfigureRuntime(slot.RequiredPartType, partSprites[i]);
|
||||||
SetPartSpawnPosition(part, i);
|
SetPartSpawnPosition(part, i);
|
||||||
_runtimeNodes.Add(part.gameObject);
|
_runtimeNodes.Add(part.gameObject);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private List<CombinePartContext> BuildPartContextList(CombineFormContext context)
|
private static List<Sprite> ClonePartSprites(List<Sprite> source)
|
||||||
{
|
{
|
||||||
if (context.Parts != null && context.Parts.Count > 0)
|
var result = new List<Sprite>();
|
||||||
|
if (source == null)
|
||||||
{
|
{
|
||||||
return context.Parts;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
List<CombinePartContext> fallbackParts = new List<CombinePartContext>(context.Slots.Count);
|
for (int i = 0; i < source.Count; i++)
|
||||||
for (int i = 0; i < context.Slots.Count; i++)
|
|
||||||
{
|
{
|
||||||
CombineSlotContext slot = context.Slots[i];
|
result.Add(source[i]);
|
||||||
fallbackParts.Add(new CombinePartContext
|
|
||||||
{
|
|
||||||
PartType = slot.RequiredPartType,
|
|
||||||
PartDisplayName = slot.RequiredPartType.ToString(),
|
|
||||||
MechanicsExplanation = slot.MechanicsExplanation,
|
|
||||||
LockAfterPlaced = true
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return fallbackParts;
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void CenterStructureNode(GameObject structureNode)
|
||||||
|
{
|
||||||
|
if (structureNode == null)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
RectTransform rectTransform = structureNode.transform as RectTransform;
|
||||||
|
if (rectTransform != null)
|
||||||
|
{
|
||||||
|
rectTransform.anchoredPosition = Vector2.zero;
|
||||||
|
rectTransform.localScale = Vector3.one;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
structureNode.transform.localPosition = Vector3.zero;
|
||||||
|
structureNode.transform.localScale = Vector3.one;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void SetPartSpawnPosition(CombineDraggablePart part, int index)
|
private void SetPartSpawnPosition(CombineDraggablePart part, int index)
|
||||||
|
|
@ -249,10 +317,14 @@ namespace UI
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
float minX = Mathf.Lerp(rootRect.xMin, rootRect.xMax, Mathf.Min(_partSpawnMinXNormalized, _partSpawnMaxXNormalized));
|
float minX = Mathf.Lerp(rootRect.xMin, rootRect.xMax,
|
||||||
float maxX = Mathf.Lerp(rootRect.xMin, rootRect.xMax, Mathf.Max(_partSpawnMinXNormalized, _partSpawnMaxXNormalized));
|
Mathf.Min(_partSpawnMinXNormalized, _partSpawnMaxXNormalized));
|
||||||
float minY = Mathf.Lerp(rootRect.yMin, rootRect.yMax, Mathf.Min(_partSpawnMinYNormalized, _partSpawnMaxYNormalized));
|
float maxX = Mathf.Lerp(rootRect.xMin, rootRect.xMax,
|
||||||
float maxY = Mathf.Lerp(rootRect.yMin, rootRect.yMax, Mathf.Max(_partSpawnMinYNormalized, _partSpawnMaxYNormalized));
|
Mathf.Max(_partSpawnMinXNormalized, _partSpawnMaxXNormalized));
|
||||||
|
float minY = Mathf.Lerp(rootRect.yMin, rootRect.yMax,
|
||||||
|
Mathf.Min(_partSpawnMinYNormalized, _partSpawnMaxYNormalized));
|
||||||
|
float maxY = Mathf.Lerp(rootRect.yMin, rootRect.yMax,
|
||||||
|
Mathf.Max(_partSpawnMinYNormalized, _partSpawnMaxYNormalized));
|
||||||
|
|
||||||
partRect.anchoredPosition = new Vector2(
|
partRect.anchoredPosition = new Vector2(
|
||||||
Random.Range(minX, maxX),
|
Random.Range(minX, maxX),
|
||||||
|
|
@ -263,39 +335,12 @@ namespace UI
|
||||||
|
|
||||||
#region Event Handlers
|
#region Event Handlers
|
||||||
|
|
||||||
private void OnGuideMessageChanged(object sender, GameEventArgs e)
|
private void OnFeedbackChanged(object sender, GameEventArgs e)
|
||||||
{
|
{
|
||||||
if (!(e is CombineGuideMessageEventArgs args)) return;
|
if (!(e is CombineFeedbackEventArgs args)) return;
|
||||||
if (_guideText != null)
|
if (_hintText != null)
|
||||||
{
|
{
|
||||||
_guideText.text = args.Message;
|
_hintText.text = args.Message;
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void OnPartExplained(object sender, GameEventArgs e)
|
|
||||||
{
|
|
||||||
if (!(e is CombinePartMessageEventArgs args)) return;
|
|
||||||
if (_explanationText != null)
|
|
||||||
{
|
|
||||||
_explanationText.text = args.Message;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void OnProgressChanged(object sender, GameEventArgs e)
|
|
||||||
{
|
|
||||||
if (!(e is CombineProgressEventArgs args)) return;
|
|
||||||
if (_progressText != null)
|
|
||||||
{
|
|
||||||
_progressText.text = string.Format(_progressFormat, args.CurrentStep, args.TotalSteps);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void OnPuzzleCompleted(object sender, GameEventArgs e)
|
|
||||||
{
|
|
||||||
if (!(e is CombineCompletedEventArgs args)) return;
|
|
||||||
if (_progressText != null)
|
|
||||||
{
|
|
||||||
_progressText.text = string.Format(_progressFormat, _controller.TotalStep, _controller.TotalStep);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -32,16 +32,6 @@ namespace UI
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[SerializeField] private RectTransform _snapPoint;
|
[SerializeField] private RectTransform _snapPoint;
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 放置成功后的力学说明文案。
|
|
||||||
/// </summary>
|
|
||||||
[SerializeField] [TextArea(2, 4)] private string _mechanicsExplanation = string.Empty;
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 部件不匹配时的自定义提示文案。
|
|
||||||
/// </summary>
|
|
||||||
[SerializeField] [TextArea(2, 4)] private string _mismatchHint = string.Empty;
|
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region Runtime State
|
#region Runtime State
|
||||||
|
|
@ -80,16 +70,6 @@ namespace UI
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public bool IsOccupied => _occupiedPart != null;
|
public bool IsOccupied => _occupiedPart != null;
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 获取槽位的力学说明文案。
|
|
||||||
/// </summary>
|
|
||||||
public string MechanicsExplanation => _mechanicsExplanation;
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 获取槽位不匹配提示文案。
|
|
||||||
/// </summary>
|
|
||||||
public string MismatchHint => _mismatchHint;
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 获取槽位吸附点。
|
/// 获取槽位吸附点。
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
@ -107,25 +87,6 @@ namespace UI
|
||||||
_controller = controller;
|
_controller = controller;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 使用运行时数据初始化槽位配置。
|
|
||||||
/// </summary>
|
|
||||||
public void Initialize(CombineSlotContext data)
|
|
||||||
{
|
|
||||||
_requiredPartType = data.RequiredPartType;
|
|
||||||
_buildOrder = data.BuildOrder;
|
|
||||||
_requireStrictOrder = data.RequireStrictOrder;
|
|
||||||
_mechanicsExplanation = data.MechanicsExplanation ?? string.Empty;
|
|
||||||
_mismatchHint = data.MismatchHint ?? string.Empty;
|
|
||||||
|
|
||||||
RectTransform rectTransform = transform as RectTransform;
|
|
||||||
if (rectTransform != null)
|
|
||||||
{
|
|
||||||
rectTransform.anchoredPosition = data.AnchoredPosition;
|
|
||||||
rectTransform.sizeDelta = data.SizeDelta;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 设置槽位吸附点,为空时回退到槽位自身。
|
/// 设置槽位吸附点,为空时回退到槽位自身。
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,114 @@
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using Event;
|
||||||
|
using GameFramework.Event;
|
||||||
|
using UnityEngine;
|
||||||
|
using UnityEngine.UI;
|
||||||
|
using UnityGameFramework.Runtime;
|
||||||
|
|
||||||
|
namespace UI
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Stage overlay for combine silhouette prefab.
|
||||||
|
/// Sprite index matches assemble step index (step1 -> index0).
|
||||||
|
/// </summary>
|
||||||
|
public class CombineStageOverlay : MonoBehaviour
|
||||||
|
{
|
||||||
|
[SerializeField] private Image _overlayImage;
|
||||||
|
|
||||||
|
[SerializeField] private List<Sprite> _stageSprites = new List<Sprite>();
|
||||||
|
|
||||||
|
[SerializeField] private List<CombineSlot> _slots = new List<CombineSlot>();
|
||||||
|
|
||||||
|
[SerializeField] private bool _autoCollectSlotsWhenEmpty = true;
|
||||||
|
|
||||||
|
private void Awake()
|
||||||
|
{
|
||||||
|
if (_overlayImage == null)
|
||||||
|
{
|
||||||
|
_overlayImage = GetComponent<Image>();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnEnable()
|
||||||
|
{
|
||||||
|
if (GameEntry.Event != null)
|
||||||
|
{
|
||||||
|
GameEntry.Event.Subscribe(CombineProgressEventArgs.EventId, OnCombineProgressChanged);
|
||||||
|
}
|
||||||
|
|
||||||
|
ApplyOverlayByStep(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnDisable()
|
||||||
|
{
|
||||||
|
if (GameEntry.Event != null)
|
||||||
|
{
|
||||||
|
GameEntry.Event.Unsubscribe(CombineProgressEventArgs.EventId, OnCombineProgressChanged);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnCombineProgressChanged(object sender, GameEventArgs e)
|
||||||
|
{
|
||||||
|
if (!(e is CombineProgressEventArgs args))
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
ApplyOverlayByStep(args.CurrentStep);
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<CombineSlot> GetManagedSlots()
|
||||||
|
{
|
||||||
|
var result = new List<CombineSlot>();
|
||||||
|
|
||||||
|
if (_slots != null && _slots.Count > 0)
|
||||||
|
{
|
||||||
|
for (int i = 0; i < _slots.Count; i++)
|
||||||
|
{
|
||||||
|
CombineSlot slot = _slots[i];
|
||||||
|
if (slot != null && !result.Contains(slot))
|
||||||
|
{
|
||||||
|
result.Add(slot);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (result.Count == 0 && _autoCollectSlotsWhenEmpty)
|
||||||
|
{
|
||||||
|
CombineSlot[] discoveredSlots = GetComponentsInChildren<CombineSlot>(true);
|
||||||
|
for (int i = 0; i < discoveredSlots.Length; i++)
|
||||||
|
{
|
||||||
|
CombineSlot slot = discoveredSlots[i];
|
||||||
|
if (slot != null)
|
||||||
|
{
|
||||||
|
result.Add(slot);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void ApplyOverlayByStep(int currentStep)
|
||||||
|
{
|
||||||
|
if (_overlayImage == null)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (currentStep <= 0 || _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)
|
||||||
|
{
|
||||||
|
_overlayImage.SetNativeSize();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
fileFormatVersion: 2
|
fileFormatVersion: 2
|
||||||
guid: 03894567063ea7d42a417545043e32c6
|
guid: a9073bd22a6f4675b117bd711b68a031
|
||||||
MonoImporter:
|
MonoImporter:
|
||||||
externalObjects: {}
|
externalObjects: {}
|
||||||
serializedVersion: 2
|
serializedVersion: 2
|
||||||
|
|
@ -18,5 +18,73 @@ MonoBehaviour:
|
||||||
_useDefaultConfig: 1
|
_useDefaultConfig: 1
|
||||||
_combineConfig:
|
_combineConfig:
|
||||||
AutoStart: 1
|
AutoStart: 1
|
||||||
Slots: []
|
StructurePrefab: {fileID: 0}
|
||||||
Parts: []
|
Slots:
|
||||||
|
- RequiredPartType: 0
|
||||||
|
BuildOrder: 0
|
||||||
|
RequireStrictOrder: 1
|
||||||
|
AnchoredPosition: {x: 0, y: 0}
|
||||||
|
SizeDelta: {x: 0, y: 0}
|
||||||
|
MechanicsExplanation:
|
||||||
|
MismatchHint:
|
||||||
|
- RequiredPartType: 0
|
||||||
|
BuildOrder: 1
|
||||||
|
RequireStrictOrder: 1
|
||||||
|
AnchoredPosition: {x: 0, y: 0}
|
||||||
|
SizeDelta: {x: 0, y: 0}
|
||||||
|
MechanicsExplanation:
|
||||||
|
MismatchHint:
|
||||||
|
- RequiredPartType: 0
|
||||||
|
BuildOrder: 2
|
||||||
|
RequireStrictOrder: 1
|
||||||
|
AnchoredPosition: {x: 0, y: 0}
|
||||||
|
SizeDelta: {x: 0, y: 0}
|
||||||
|
MechanicsExplanation:
|
||||||
|
MismatchHint:
|
||||||
|
- RequiredPartType: 0
|
||||||
|
BuildOrder: 3
|
||||||
|
RequireStrictOrder: 1
|
||||||
|
AnchoredPosition: {x: 0, y: 0}
|
||||||
|
SizeDelta: {x: 0, y: 0}
|
||||||
|
MechanicsExplanation:
|
||||||
|
MismatchHint:
|
||||||
|
- RequiredPartType: 0
|
||||||
|
BuildOrder: 4
|
||||||
|
RequireStrictOrder: 1
|
||||||
|
AnchoredPosition: {x: 0, y: 0}
|
||||||
|
SizeDelta: {x: 0, y: 0}
|
||||||
|
MechanicsExplanation:
|
||||||
|
MismatchHint:
|
||||||
|
- RequiredPartType: 0
|
||||||
|
BuildOrder: 5
|
||||||
|
RequireStrictOrder: 1
|
||||||
|
AnchoredPosition: {x: 0, y: 0}
|
||||||
|
SizeDelta: {x: 0, y: 0}
|
||||||
|
MechanicsExplanation:
|
||||||
|
MismatchHint:
|
||||||
|
Parts:
|
||||||
|
- PartType: 0
|
||||||
|
PartDisplayName:
|
||||||
|
MechanicsExplanation:
|
||||||
|
LockAfterPlaced: 1
|
||||||
|
- PartType: 0
|
||||||
|
PartDisplayName:
|
||||||
|
MechanicsExplanation:
|
||||||
|
LockAfterPlaced: 1
|
||||||
|
- PartType: 0
|
||||||
|
PartDisplayName:
|
||||||
|
MechanicsExplanation:
|
||||||
|
LockAfterPlaced: 1
|
||||||
|
- PartType: 0
|
||||||
|
PartDisplayName:
|
||||||
|
MechanicsExplanation:
|
||||||
|
LockAfterPlaced: 1
|
||||||
|
- PartType: 0
|
||||||
|
PartDisplayName:
|
||||||
|
MechanicsExplanation:
|
||||||
|
LockAfterPlaced: 1
|
||||||
|
- PartType: 0
|
||||||
|
PartDisplayName:
|
||||||
|
MechanicsExplanation:
|
||||||
|
LockAfterPlaced: 1
|
||||||
|
PartEntries: []
|
||||||
|
|
|
||||||
|
|
@ -30,10 +30,10 @@ RectTransform:
|
||||||
m_Children: []
|
m_Children: []
|
||||||
m_Father: {fileID: 4910643681303047144}
|
m_Father: {fileID: 4910643681303047144}
|
||||||
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, y: 0.5}
|
||||||
m_AnchorMax: {x: 0.5, y: 0.5}
|
m_AnchorMax: {x: 0, y: 0.5}
|
||||||
m_AnchoredPosition: {x: -600, y: 0}
|
m_AnchoredPosition: {x: 564.5, y: 0}
|
||||||
m_SizeDelta: {x: 800, y: 1200}
|
m_SizeDelta: {x: 700, y: 936}
|
||||||
m_Pivot: {x: 0.5, y: 0.5}
|
m_Pivot: {x: 0.5, y: 0.5}
|
||||||
--- !u!1 &2011188234629358943
|
--- !u!1 &2011188234629358943
|
||||||
GameObject:
|
GameObject:
|
||||||
|
|
@ -65,10 +65,10 @@ RectTransform:
|
||||||
m_Children: []
|
m_Children: []
|
||||||
m_Father: {fileID: 4910643681303047144}
|
m_Father: {fileID: 4910643681303047144}
|
||||||
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: 1, y: 0.5}
|
||||||
m_AnchorMax: {x: 0.5, y: 0.5}
|
m_AnchorMax: {x: 1, y: 0.5}
|
||||||
m_AnchoredPosition: {x: 600, y: 0}
|
m_AnchoredPosition: {x: -564.5, y: 0}
|
||||||
m_SizeDelta: {x: 800, y: 1200}
|
m_SizeDelta: {x: 700, y: 936}
|
||||||
m_Pivot: {x: 0.5, y: 0.5}
|
m_Pivot: {x: 0.5, y: 0.5}
|
||||||
--- !u!1 &2986823183271339632
|
--- !u!1 &2986823183271339632
|
||||||
GameObject:
|
GameObject:
|
||||||
|
|
@ -82,7 +82,7 @@ GameObject:
|
||||||
- component: {fileID: 2741572727601712841}
|
- component: {fileID: 2741572727601712841}
|
||||||
- component: {fileID: 8374446790382258145}
|
- component: {fileID: 8374446790382258145}
|
||||||
m_Layer: 5
|
m_Layer: 5
|
||||||
m_Name: GuideText
|
m_Name: HintText
|
||||||
m_TagString: Untagged
|
m_TagString: Untagged
|
||||||
m_Icon: {fileID: 0}
|
m_Icon: {fileID: 0}
|
||||||
m_NavMeshLayer: 0
|
m_NavMeshLayer: 0
|
||||||
|
|
@ -102,10 +102,10 @@ RectTransform:
|
||||||
m_Children: []
|
m_Children: []
|
||||||
m_Father: {fileID: 4910643681303047144}
|
m_Father: {fileID: 4910643681303047144}
|
||||||
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: 1}
|
||||||
m_AnchorMax: {x: 0.5, y: 0.5}
|
m_AnchorMax: {x: 0.5, y: 1}
|
||||||
m_AnchoredPosition: {x: 0, y: 600}
|
m_AnchoredPosition: {x: 0, y: -50}
|
||||||
m_SizeDelta: {x: 1200, y: 200}
|
m_SizeDelta: {x: 1200, y: 100}
|
||||||
m_Pivot: {x: 0.5, y: 0.5}
|
m_Pivot: {x: 0.5, y: 0.5}
|
||||||
--- !u!222 &2741572727601712841
|
--- !u!222 &2741572727601712841
|
||||||
CanvasRenderer:
|
CanvasRenderer:
|
||||||
|
|
@ -135,144 +135,11 @@ MonoBehaviour:
|
||||||
m_OnCullStateChanged:
|
m_OnCullStateChanged:
|
||||||
m_PersistentCalls:
|
m_PersistentCalls:
|
||||||
m_Calls: []
|
m_Calls: []
|
||||||
m_text: New Text
|
m_text: "\u5B8C\u6210"
|
||||||
m_isRightToLeft: 0
|
m_isRightToLeft: 0
|
||||||
m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2}
|
m_fontAsset: {fileID: 11400000, guid: a84959718d612514583680c96ee8271a, type: 2}
|
||||||
m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2}
|
m_sharedMaterial: {fileID: 7425184593944002063, guid: a84959718d612514583680c96ee8271a,
|
||||||
m_fontSharedMaterials: []
|
type: 2}
|
||||||
m_fontMaterial: {fileID: 0}
|
|
||||||
m_fontMaterials: []
|
|
||||||
m_fontColor32:
|
|
||||||
serializedVersion: 2
|
|
||||||
rgba: 4294967295
|
|
||||||
m_fontColor: {r: 1, g: 1, b: 1, a: 1}
|
|
||||||
m_enableVertexGradient: 0
|
|
||||||
m_colorMode: 3
|
|
||||||
m_fontColorGradient:
|
|
||||||
topLeft: {r: 1, g: 1, b: 1, a: 1}
|
|
||||||
topRight: {r: 1, g: 1, b: 1, a: 1}
|
|
||||||
bottomLeft: {r: 1, g: 1, b: 1, a: 1}
|
|
||||||
bottomRight: {r: 1, g: 1, b: 1, a: 1}
|
|
||||||
m_fontColorGradientPreset: {fileID: 0}
|
|
||||||
m_spriteAsset: {fileID: 0}
|
|
||||||
m_tintAllSprites: 0
|
|
||||||
m_StyleSheet: {fileID: 0}
|
|
||||||
m_TextStyleHashCode: -1183493901
|
|
||||||
m_overrideHtmlColors: 0
|
|
||||||
m_faceColor:
|
|
||||||
serializedVersion: 2
|
|
||||||
rgba: 4294967295
|
|
||||||
m_fontSize: 72
|
|
||||||
m_fontSizeBase: 36
|
|
||||||
m_fontWeight: 400
|
|
||||||
m_enableAutoSizing: 1
|
|
||||||
m_fontSizeMin: 18
|
|
||||||
m_fontSizeMax: 72
|
|
||||||
m_fontStyle: 0
|
|
||||||
m_HorizontalAlignment: 2
|
|
||||||
m_VerticalAlignment: 512
|
|
||||||
m_textAlignment: 65535
|
|
||||||
m_characterSpacing: 0
|
|
||||||
m_wordSpacing: 0
|
|
||||||
m_lineSpacing: 0
|
|
||||||
m_lineSpacingMax: 0
|
|
||||||
m_paragraphSpacing: 0
|
|
||||||
m_charWidthMaxAdj: 0
|
|
||||||
m_enableWordWrapping: 1
|
|
||||||
m_wordWrappingRatios: 0.4
|
|
||||||
m_overflowMode: 0
|
|
||||||
m_linkedTextComponent: {fileID: 0}
|
|
||||||
parentLinkedComponent: {fileID: 0}
|
|
||||||
m_enableKerning: 1
|
|
||||||
m_enableExtraPadding: 0
|
|
||||||
checkPaddingRequired: 0
|
|
||||||
m_isRichText: 1
|
|
||||||
m_parseCtrlCharacters: 1
|
|
||||||
m_isOrthographic: 1
|
|
||||||
m_isCullingEnabled: 0
|
|
||||||
m_horizontalMapping: 0
|
|
||||||
m_verticalMapping: 0
|
|
||||||
m_uvLineOffset: 0
|
|
||||||
m_geometrySortingOrder: 0
|
|
||||||
m_IsTextObjectScaleStatic: 0
|
|
||||||
m_VertexBufferAutoSizeReduction: 0
|
|
||||||
m_useMaxVisibleDescender: 1
|
|
||||||
m_pageToDisplay: 1
|
|
||||||
m_margin: {x: 0, y: 0, z: 0, w: 0}
|
|
||||||
m_isUsingLegacyAnimationComponent: 0
|
|
||||||
m_isVolumetricText: 0
|
|
||||||
m_hasFontAssetChanged: 0
|
|
||||||
m_baseMaterial: {fileID: 0}
|
|
||||||
m_maskOffset: {x: 0, y: 0, z: 0, w: 0}
|
|
||||||
--- !u!1 &3873621996460712409
|
|
||||||
GameObject:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
serializedVersion: 6
|
|
||||||
m_Component:
|
|
||||||
- component: {fileID: 87251070282432426}
|
|
||||||
- component: {fileID: 7060376361321348075}
|
|
||||||
- component: {fileID: 853330703568573631}
|
|
||||||
m_Layer: 5
|
|
||||||
m_Name: ExplantionText
|
|
||||||
m_TagString: Untagged
|
|
||||||
m_Icon: {fileID: 0}
|
|
||||||
m_NavMeshLayer: 0
|
|
||||||
m_StaticEditorFlags: 0
|
|
||||||
m_IsActive: 1
|
|
||||||
--- !u!224 &87251070282432426
|
|
||||||
RectTransform:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 3873621996460712409}
|
|
||||||
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: 4910643681303047144}
|
|
||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
|
||||||
m_AnchorMin: {x: 0.5, y: 0.5}
|
|
||||||
m_AnchorMax: {x: 0.5, y: 0.5}
|
|
||||||
m_AnchoredPosition: {x: 0, y: -600}
|
|
||||||
m_SizeDelta: {x: 1200, y: 200}
|
|
||||||
m_Pivot: {x: 0.5, y: 0.5}
|
|
||||||
--- !u!222 &7060376361321348075
|
|
||||||
CanvasRenderer:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 3873621996460712409}
|
|
||||||
m_CullTransparentMesh: 1
|
|
||||||
--- !u!114 &853330703568573631
|
|
||||||
MonoBehaviour:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 3873621996460712409}
|
|
||||||
m_Enabled: 1
|
|
||||||
m_EditorHideFlags: 0
|
|
||||||
m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3}
|
|
||||||
m_Name:
|
|
||||||
m_EditorClassIdentifier:
|
|
||||||
m_Material: {fileID: 0}
|
|
||||||
m_Color: {r: 1, g: 1, b: 1, a: 1}
|
|
||||||
m_RaycastTarget: 1
|
|
||||||
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
|
|
||||||
m_Maskable: 1
|
|
||||||
m_OnCullStateChanged:
|
|
||||||
m_PersistentCalls:
|
|
||||||
m_Calls: []
|
|
||||||
m_text: New Text
|
|
||||||
m_isRightToLeft: 0
|
|
||||||
m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2}
|
|
||||||
m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2}
|
|
||||||
m_fontSharedMaterials: []
|
m_fontSharedMaterials: []
|
||||||
m_fontMaterial: {fileID: 0}
|
m_fontMaterial: {fileID: 0}
|
||||||
m_fontMaterials: []
|
m_fontMaterials: []
|
||||||
|
|
@ -350,7 +217,7 @@ GameObject:
|
||||||
- component: {fileID: 2420282737750769956}
|
- component: {fileID: 2420282737750769956}
|
||||||
- component: {fileID: 457794338423505963}
|
- component: {fileID: 457794338423505963}
|
||||||
m_Layer: 5
|
m_Layer: 5
|
||||||
m_Name: raycast
|
m_Name: bg
|
||||||
m_TagString: Untagged
|
m_TagString: Untagged
|
||||||
m_Icon: {fileID: 0}
|
m_Icon: {fileID: 0}
|
||||||
m_NavMeshLayer: 0
|
m_NavMeshLayer: 0
|
||||||
|
|
@ -370,10 +237,10 @@ RectTransform:
|
||||||
m_Children: []
|
m_Children: []
|
||||||
m_Father: {fileID: 4910643681303047144}
|
m_Father: {fileID: 4910643681303047144}
|
||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
m_AnchorMin: {x: 0, y: 0}
|
m_AnchorMin: {x: 0.5, y: 0.5}
|
||||||
m_AnchorMax: {x: 1, y: 1}
|
m_AnchorMax: {x: 0.5, y: 0.5}
|
||||||
m_AnchoredPosition: {x: 0, y: 0}
|
m_AnchoredPosition: {x: 0, y: 0}
|
||||||
m_SizeDelta: {x: 0, y: 0}
|
m_SizeDelta: {x: 1619, y: 936}
|
||||||
m_Pivot: {x: 0.5, y: 0.5}
|
m_Pivot: {x: 0.5, y: 0.5}
|
||||||
--- !u!222 &2420282737750769956
|
--- !u!222 &2420282737750769956
|
||||||
CanvasRenderer:
|
CanvasRenderer:
|
||||||
|
|
@ -396,14 +263,14 @@ MonoBehaviour:
|
||||||
m_Name:
|
m_Name:
|
||||||
m_EditorClassIdentifier:
|
m_EditorClassIdentifier:
|
||||||
m_Material: {fileID: 0}
|
m_Material: {fileID: 0}
|
||||||
m_Color: {r: 1, g: 1, b: 1, a: 0}
|
m_Color: {r: 1, g: 1, b: 1, a: 1}
|
||||||
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
|
||||||
m_OnCullStateChanged:
|
m_OnCullStateChanged:
|
||||||
m_PersistentCalls:
|
m_PersistentCalls:
|
||||||
m_Calls: []
|
m_Calls: []
|
||||||
m_Sprite: {fileID: 0}
|
m_Sprite: {fileID: 21300000, guid: cea23c2d9f8088e48a5c1c211de387fd, type: 3}
|
||||||
m_Type: 0
|
m_Type: 0
|
||||||
m_PreserveAspect: 0
|
m_PreserveAspect: 0
|
||||||
m_FillCenter: 1
|
m_FillCenter: 1
|
||||||
|
|
@ -413,7 +280,7 @@ MonoBehaviour:
|
||||||
m_FillOrigin: 0
|
m_FillOrigin: 0
|
||||||
m_UseSpriteMesh: 0
|
m_UseSpriteMesh: 0
|
||||||
m_PixelsPerUnitMultiplier: 1
|
m_PixelsPerUnitMultiplier: 1
|
||||||
--- !u!1 &5084888560994457996
|
--- !u!1 &5027607342650564509
|
||||||
GameObject:
|
GameObject:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
|
@ -421,94 +288,23 @@ GameObject:
|
||||||
m_PrefabAsset: {fileID: 0}
|
m_PrefabAsset: {fileID: 0}
|
||||||
serializedVersion: 6
|
serializedVersion: 6
|
||||||
m_Component:
|
m_Component:
|
||||||
- component: {fileID: 4910643681303047144}
|
- component: {fileID: 6901203087883984833}
|
||||||
- component: {fileID: 1929177314570966893}
|
- component: {fileID: 1782294839083808459}
|
||||||
|
- component: {fileID: 6976853878314717487}
|
||||||
m_Layer: 5
|
m_Layer: 5
|
||||||
m_Name: CombineForm
|
m_Name: TipText
|
||||||
m_TagString: Untagged
|
m_TagString: Untagged
|
||||||
m_Icon: {fileID: 0}
|
m_Icon: {fileID: 0}
|
||||||
m_NavMeshLayer: 0
|
m_NavMeshLayer: 0
|
||||||
m_StaticEditorFlags: 0
|
m_StaticEditorFlags: 0
|
||||||
m_IsActive: 1
|
m_IsActive: 1
|
||||||
--- !u!224 &4910643681303047144
|
--- !u!224 &6901203087883984833
|
||||||
RectTransform:
|
RectTransform:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
m_PrefabInstance: {fileID: 0}
|
m_PrefabInstance: {fileID: 0}
|
||||||
m_PrefabAsset: {fileID: 0}
|
m_PrefabAsset: {fileID: 0}
|
||||||
m_GameObject: {fileID: 5084888560994457996}
|
m_GameObject: {fileID: 5027607342650564509}
|
||||||
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:
|
|
||||||
- {fileID: 4526989310283327243}
|
|
||||||
- {fileID: 7190008853478101747}
|
|
||||||
- {fileID: 1061474815361198294}
|
|
||||||
- {fileID: 7767208163422656795}
|
|
||||||
- {fileID: 87251070282432426}
|
|
||||||
- {fileID: 2518245264378983476}
|
|
||||||
m_Father: {fileID: 0}
|
|
||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
|
||||||
m_AnchorMin: {x: 0, y: 0}
|
|
||||||
m_AnchorMax: {x: 1, y: 1}
|
|
||||||
m_AnchoredPosition: {x: 0, y: 0}
|
|
||||||
m_SizeDelta: {x: 0, y: 0}
|
|
||||||
m_Pivot: {x: 0.5, y: 0.5}
|
|
||||||
--- !u!114 &1929177314570966893
|
|
||||||
MonoBehaviour:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 5084888560994457996}
|
|
||||||
m_Enabled: 1
|
|
||||||
m_EditorHideFlags: 0
|
|
||||||
m_Script: {fileID: 11500000, guid: 004eb70514fd9064ca990769ebe97043, type: 3}
|
|
||||||
m_Name:
|
|
||||||
m_EditorClassIdentifier:
|
|
||||||
_controller: {fileID: 0}
|
|
||||||
_slotRoot: {fileID: 7190008853478101747}
|
|
||||||
_partRoot: {fileID: 1061474815361198294}
|
|
||||||
_slotPrefab: {fileID: 7403865899990918019, guid: 0bbb3a6d1e6bb8b4a9b4d8f0510d9c63,
|
|
||||||
type: 3}
|
|
||||||
_partPrefab: {fileID: 168291002298569870, guid: 68d252316715f9f4fbb327802325e2e2,
|
|
||||||
type: 3}
|
|
||||||
_guideText: {fileID: 8374446790382258145}
|
|
||||||
_explanationText: {fileID: 853330703568573631}
|
|
||||||
_progressText: {fileID: 7447302114744653531}
|
|
||||||
_progressFormat: '{0}/{1}'
|
|
||||||
_partStartAnchoredPosition: {x: 0, y: -40}
|
|
||||||
_partVerticalSpacing: 120
|
|
||||||
_partSpawnMinXNormalized: 0.55
|
|
||||||
_partSpawnMaxXNormalized: 0.95
|
|
||||||
_partSpawnMinYNormalized: 0.1
|
|
||||||
_partSpawnMaxYNormalized: 0.9
|
|
||||||
--- !u!1 &5518555242189156955
|
|
||||||
GameObject:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
serializedVersion: 6
|
|
||||||
m_Component:
|
|
||||||
- component: {fileID: 2518245264378983476}
|
|
||||||
- component: {fileID: 3039910190566301186}
|
|
||||||
- component: {fileID: 7447302114744653531}
|
|
||||||
m_Layer: 5
|
|
||||||
m_Name: ProgressText
|
|
||||||
m_TagString: Untagged
|
|
||||||
m_Icon: {fileID: 0}
|
|
||||||
m_NavMeshLayer: 0
|
|
||||||
m_StaticEditorFlags: 0
|
|
||||||
m_IsActive: 1
|
|
||||||
--- !u!224 &2518245264378983476
|
|
||||||
RectTransform:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 5518555242189156955}
|
|
||||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
|
|
@ -516,26 +312,26 @@ RectTransform:
|
||||||
m_Children: []
|
m_Children: []
|
||||||
m_Father: {fileID: 4910643681303047144}
|
m_Father: {fileID: 4910643681303047144}
|
||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
m_AnchorMin: {x: 1, y: 1}
|
m_AnchorMin: {x: 0.5, y: 0}
|
||||||
m_AnchorMax: {x: 1, y: 1}
|
m_AnchorMax: {x: 0.5, y: 0}
|
||||||
m_AnchoredPosition: {x: -300, y: -100}
|
m_AnchoredPosition: {x: 0, y: 50}
|
||||||
m_SizeDelta: {x: 600, y: 200}
|
m_SizeDelta: {x: 1200, y: 100}
|
||||||
m_Pivot: {x: 0.5, y: 0.5}
|
m_Pivot: {x: 0.5, y: 0.5}
|
||||||
--- !u!222 &3039910190566301186
|
--- !u!222 &1782294839083808459
|
||||||
CanvasRenderer:
|
CanvasRenderer:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
m_PrefabInstance: {fileID: 0}
|
m_PrefabInstance: {fileID: 0}
|
||||||
m_PrefabAsset: {fileID: 0}
|
m_PrefabAsset: {fileID: 0}
|
||||||
m_GameObject: {fileID: 5518555242189156955}
|
m_GameObject: {fileID: 5027607342650564509}
|
||||||
m_CullTransparentMesh: 1
|
m_CullTransparentMesh: 1
|
||||||
--- !u!114 &7447302114744653531
|
--- !u!114 &6976853878314717487
|
||||||
MonoBehaviour:
|
MonoBehaviour:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
m_PrefabInstance: {fileID: 0}
|
m_PrefabInstance: {fileID: 0}
|
||||||
m_PrefabAsset: {fileID: 0}
|
m_PrefabAsset: {fileID: 0}
|
||||||
m_GameObject: {fileID: 5518555242189156955}
|
m_GameObject: {fileID: 5027607342650564509}
|
||||||
m_Enabled: 1
|
m_Enabled: 1
|
||||||
m_EditorHideFlags: 0
|
m_EditorHideFlags: 0
|
||||||
m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3}
|
m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3}
|
||||||
|
|
@ -549,10 +345,11 @@ MonoBehaviour:
|
||||||
m_OnCullStateChanged:
|
m_OnCullStateChanged:
|
||||||
m_PersistentCalls:
|
m_PersistentCalls:
|
||||||
m_Calls: []
|
m_Calls: []
|
||||||
m_text: New Text
|
m_text: "\u5C06\u53F3\u4FA7\u7684\u90E8\u4EF6\u4EE5\u4E00\u5B9A\u987A\u5E8F\u653E\u7F6E\u5728\u5DE6\u4FA7"
|
||||||
m_isRightToLeft: 0
|
m_isRightToLeft: 0
|
||||||
m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2}
|
m_fontAsset: {fileID: 11400000, guid: a84959718d612514583680c96ee8271a, type: 2}
|
||||||
m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2}
|
m_sharedMaterial: {fileID: 7425184593944002063, guid: a84959718d612514583680c96ee8271a,
|
||||||
|
type: 2}
|
||||||
m_fontSharedMaterials: []
|
m_fontSharedMaterials: []
|
||||||
m_fontMaterial: {fileID: 0}
|
m_fontMaterial: {fileID: 0}
|
||||||
m_fontMaterials: []
|
m_fontMaterials: []
|
||||||
|
|
@ -618,3 +415,143 @@ MonoBehaviour:
|
||||||
m_hasFontAssetChanged: 0
|
m_hasFontAssetChanged: 0
|
||||||
m_baseMaterial: {fileID: 0}
|
m_baseMaterial: {fileID: 0}
|
||||||
m_maskOffset: {x: 0, y: 0, z: 0, w: 0}
|
m_maskOffset: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
--- !u!1 &5084888560994457996
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 4910643681303047144}
|
||||||
|
- component: {fileID: 1929177314570966893}
|
||||||
|
m_Layer: 5
|
||||||
|
m_Name: CombineForm
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!224 &4910643681303047144
|
||||||
|
RectTransform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 5084888560994457996}
|
||||||
|
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:
|
||||||
|
- {fileID: 3123058300020048662}
|
||||||
|
- {fileID: 4526989310283327243}
|
||||||
|
- {fileID: 7190008853478101747}
|
||||||
|
- {fileID: 1061474815361198294}
|
||||||
|
- {fileID: 7767208163422656795}
|
||||||
|
- {fileID: 6901203087883984833}
|
||||||
|
m_Father: {fileID: 0}
|
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
|
m_AnchorMin: {x: 0, y: 0}
|
||||||
|
m_AnchorMax: {x: 1, y: 1}
|
||||||
|
m_AnchoredPosition: {x: 0, y: 0}
|
||||||
|
m_SizeDelta: {x: 0, y: 0}
|
||||||
|
m_Pivot: {x: 0.5, y: 0.5}
|
||||||
|
--- !u!114 &1929177314570966893
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 5084888560994457996}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 004eb70514fd9064ca990769ebe97043, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
_slotRoot: {fileID: 7190008853478101747}
|
||||||
|
_partRoot: {fileID: 1061474815361198294}
|
||||||
|
_partPrefab: {fileID: 168291002298569870, guid: 68d252316715f9f4fbb327802325e2e2,
|
||||||
|
type: 3}
|
||||||
|
_hintText: {fileID: 8374446790382258145}
|
||||||
|
_partStartAnchoredPosition: {x: 0, y: -40}
|
||||||
|
_partVerticalSpacing: 120
|
||||||
|
_partSpawnMinXNormalized: 0.55
|
||||||
|
_partSpawnMaxXNormalized: 0.95
|
||||||
|
_partSpawnMinYNormalized: 0.1
|
||||||
|
_partSpawnMaxYNormalized: 0.9
|
||||||
|
--- !u!1 &8697212227441041374
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 3123058300020048662}
|
||||||
|
- component: {fileID: 4934787828251337820}
|
||||||
|
- component: {fileID: 5275645048665292411}
|
||||||
|
m_Layer: 5
|
||||||
|
m_Name: raycast
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!224 &3123058300020048662
|
||||||
|
RectTransform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 8697212227441041374}
|
||||||
|
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: 4910643681303047144}
|
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
|
m_AnchorMin: {x: 0, y: 0}
|
||||||
|
m_AnchorMax: {x: 1, y: 1}
|
||||||
|
m_AnchoredPosition: {x: 0, y: 0}
|
||||||
|
m_SizeDelta: {x: 0, y: 0}
|
||||||
|
m_Pivot: {x: 0.5, y: 0.5}
|
||||||
|
--- !u!222 &4934787828251337820
|
||||||
|
CanvasRenderer:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 8697212227441041374}
|
||||||
|
m_CullTransparentMesh: 1
|
||||||
|
--- !u!114 &5275645048665292411
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 8697212227441041374}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
m_Material: {fileID: 0}
|
||||||
|
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
|
||||||
|
m_OnCullStateChanged:
|
||||||
|
m_PersistentCalls:
|
||||||
|
m_Calls: []
|
||||||
|
m_Sprite: {fileID: 0}
|
||||||
|
m_Type: 0
|
||||||
|
m_PreserveAspect: 0
|
||||||
|
m_FillCenter: 1
|
||||||
|
m_FillMethod: 4
|
||||||
|
m_FillAmount: 1
|
||||||
|
m_FillClockwise: 1
|
||||||
|
m_FillOrigin: 0
|
||||||
|
m_UseSpriteMesh: 0
|
||||||
|
m_PixelsPerUnitMultiplier: 1
|
||||||
|
|
|
||||||
|
|
@ -52,11 +52,16 @@ MonoBehaviour:
|
||||||
m_Name:
|
m_Name:
|
||||||
m_EditorClassIdentifier:
|
m_EditorClassIdentifier:
|
||||||
_partType: 0
|
_partType: 0
|
||||||
_partDisplayName: Dou
|
|
||||||
_mechanicsExplanation:
|
|
||||||
_lockAfterPlaced: 1
|
_lockAfterPlaced: 1
|
||||||
_rectTransform: {fileID: 1599725415412585006}
|
_rectTransform: {fileID: 1599725415412585006}
|
||||||
_canvasGroup: {fileID: 6838118435317591914}
|
_canvasGroup: {fileID: 6838118435317591914}
|
||||||
|
_partImage: {fileID: 3927671209063741250}
|
||||||
|
_defaultScaleMultiplier: 0.8
|
||||||
|
_hoverScaleMultiplier: 1
|
||||||
|
_hoverTweenDuration: 0.15
|
||||||
|
_hoverTweenEase: 6
|
||||||
|
_returnToSpawnDuration: 0.4
|
||||||
|
_returnToSpawnEase: 9
|
||||||
--- !u!225 &6838118435317591914
|
--- !u!225 &6838118435317591914
|
||||||
CanvasGroup:
|
CanvasGroup:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
|
|
|
||||||
File diff suppressed because it is too large
Load Diff
|
|
@ -0,0 +1,7 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: bc1b2ae20db242f43b65214eb26971b0
|
||||||
|
PrefabImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
File diff suppressed because it is too large
Load Diff
|
|
@ -0,0 +1,7 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: f47370c1af96d194faa21c881c66b148
|
||||||
|
PrefabImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
|
|
@ -34,7 +34,7 @@ TextureImporter:
|
||||||
maxTextureSize: 2048
|
maxTextureSize: 2048
|
||||||
textureSettings:
|
textureSettings:
|
||||||
serializedVersion: 2
|
serializedVersion: 2
|
||||||
filterMode: 1
|
filterMode: 0
|
||||||
aniso: 1
|
aniso: 1
|
||||||
mipBias: 0
|
mipBias: 0
|
||||||
wrapU: 1
|
wrapU: 1
|
||||||
|
|
@ -72,7 +72,7 @@ TextureImporter:
|
||||||
maxTextureSize: 2048
|
maxTextureSize: 2048
|
||||||
resizeAlgorithm: 0
|
resizeAlgorithm: 0
|
||||||
textureFormat: -1
|
textureFormat: -1
|
||||||
textureCompression: 1
|
textureCompression: 0
|
||||||
compressionQuality: 50
|
compressionQuality: 50
|
||||||
crunchedCompression: 0
|
crunchedCompression: 0
|
||||||
allowsAlphaSplitting: 0
|
allowsAlphaSplitting: 0
|
||||||
|
|
@ -106,6 +106,19 @@ TextureImporter:
|
||||||
ignorePlatformSupport: 0
|
ignorePlatformSupport: 0
|
||||||
androidETC2FallbackOverride: 0
|
androidETC2FallbackOverride: 0
|
||||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
- serializedVersion: 3
|
||||||
|
buildTarget: WebGL
|
||||||
|
maxTextureSize: 2048
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
ignorePlatformSupport: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
spriteSheet:
|
spriteSheet:
|
||||||
serializedVersion: 2
|
serializedVersion: 2
|
||||||
sprites: []
|
sprites: []
|
||||||
|
|
|
||||||
|
|
@ -34,7 +34,7 @@ TextureImporter:
|
||||||
maxTextureSize: 2048
|
maxTextureSize: 2048
|
||||||
textureSettings:
|
textureSettings:
|
||||||
serializedVersion: 2
|
serializedVersion: 2
|
||||||
filterMode: 1
|
filterMode: 0
|
||||||
aniso: 1
|
aniso: 1
|
||||||
mipBias: 0
|
mipBias: 0
|
||||||
wrapU: 1
|
wrapU: 1
|
||||||
|
|
@ -72,7 +72,7 @@ TextureImporter:
|
||||||
maxTextureSize: 2048
|
maxTextureSize: 2048
|
||||||
resizeAlgorithm: 0
|
resizeAlgorithm: 0
|
||||||
textureFormat: -1
|
textureFormat: -1
|
||||||
textureCompression: 1
|
textureCompression: 0
|
||||||
compressionQuality: 50
|
compressionQuality: 50
|
||||||
crunchedCompression: 0
|
crunchedCompression: 0
|
||||||
allowsAlphaSplitting: 0
|
allowsAlphaSplitting: 0
|
||||||
|
|
@ -106,6 +106,19 @@ TextureImporter:
|
||||||
ignorePlatformSupport: 0
|
ignorePlatformSupport: 0
|
||||||
androidETC2FallbackOverride: 0
|
androidETC2FallbackOverride: 0
|
||||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
- serializedVersion: 3
|
||||||
|
buildTarget: WebGL
|
||||||
|
maxTextureSize: 2048
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
ignorePlatformSupport: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
spriteSheet:
|
spriteSheet:
|
||||||
serializedVersion: 2
|
serializedVersion: 2
|
||||||
sprites: []
|
sprites: []
|
||||||
|
|
|
||||||
|
|
@ -34,7 +34,7 @@ TextureImporter:
|
||||||
maxTextureSize: 2048
|
maxTextureSize: 2048
|
||||||
textureSettings:
|
textureSettings:
|
||||||
serializedVersion: 2
|
serializedVersion: 2
|
||||||
filterMode: 1
|
filterMode: 0
|
||||||
aniso: 1
|
aniso: 1
|
||||||
mipBias: 0
|
mipBias: 0
|
||||||
wrapU: 1
|
wrapU: 1
|
||||||
|
|
@ -72,7 +72,7 @@ TextureImporter:
|
||||||
maxTextureSize: 2048
|
maxTextureSize: 2048
|
||||||
resizeAlgorithm: 0
|
resizeAlgorithm: 0
|
||||||
textureFormat: -1
|
textureFormat: -1
|
||||||
textureCompression: 1
|
textureCompression: 0
|
||||||
compressionQuality: 50
|
compressionQuality: 50
|
||||||
crunchedCompression: 0
|
crunchedCompression: 0
|
||||||
allowsAlphaSplitting: 0
|
allowsAlphaSplitting: 0
|
||||||
|
|
@ -106,6 +106,19 @@ TextureImporter:
|
||||||
ignorePlatformSupport: 0
|
ignorePlatformSupport: 0
|
||||||
androidETC2FallbackOverride: 0
|
androidETC2FallbackOverride: 0
|
||||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
- serializedVersion: 3
|
||||||
|
buildTarget: WebGL
|
||||||
|
maxTextureSize: 2048
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
ignorePlatformSupport: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
spriteSheet:
|
spriteSheet:
|
||||||
serializedVersion: 2
|
serializedVersion: 2
|
||||||
sprites: []
|
sprites: []
|
||||||
|
|
|
||||||
|
|
@ -106,6 +106,19 @@ TextureImporter:
|
||||||
ignorePlatformSupport: 0
|
ignorePlatformSupport: 0
|
||||||
androidETC2FallbackOverride: 0
|
androidETC2FallbackOverride: 0
|
||||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
- serializedVersion: 3
|
||||||
|
buildTarget: WebGL
|
||||||
|
maxTextureSize: 2048
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 0
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
ignorePlatformSupport: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
spriteSheet:
|
spriteSheet:
|
||||||
serializedVersion: 2
|
serializedVersion: 2
|
||||||
sprites: []
|
sprites: []
|
||||||
|
|
|
||||||
Binary file not shown.
|
After Width: | Height: | Size: 2.3 MiB |
|
|
@ -0,0 +1,140 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 2732c5cde28a6be4aa906ab72b50e9cb
|
||||||
|
TextureImporter:
|
||||||
|
internalIDToNameTable: []
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 13
|
||||||
|
mipmaps:
|
||||||
|
mipMapMode: 0
|
||||||
|
enableMipMap: 0
|
||||||
|
sRGBTexture: 1
|
||||||
|
linearTexture: 0
|
||||||
|
fadeOut: 0
|
||||||
|
borderMipMap: 0
|
||||||
|
mipMapsPreserveCoverage: 0
|
||||||
|
alphaTestReferenceValue: 0.5
|
||||||
|
mipMapFadeDistanceStart: 1
|
||||||
|
mipMapFadeDistanceEnd: 3
|
||||||
|
bumpmap:
|
||||||
|
convertToNormalMap: 0
|
||||||
|
externalNormalMap: 0
|
||||||
|
heightScale: 0.25
|
||||||
|
normalMapFilter: 0
|
||||||
|
flipGreenChannel: 0
|
||||||
|
isReadable: 0
|
||||||
|
streamingMipmaps: 0
|
||||||
|
streamingMipmapsPriority: 0
|
||||||
|
vTOnly: 0
|
||||||
|
ignoreMipmapLimit: 0
|
||||||
|
grayScaleToAlpha: 0
|
||||||
|
generateCubemap: 6
|
||||||
|
cubemapConvolution: 0
|
||||||
|
seamlessCubemap: 0
|
||||||
|
textureFormat: 1
|
||||||
|
maxTextureSize: 2048
|
||||||
|
textureSettings:
|
||||||
|
serializedVersion: 2
|
||||||
|
filterMode: 0
|
||||||
|
aniso: 1
|
||||||
|
mipBias: 0
|
||||||
|
wrapU: 1
|
||||||
|
wrapV: 1
|
||||||
|
wrapW: 0
|
||||||
|
nPOTScale: 0
|
||||||
|
lightmap: 0
|
||||||
|
compressionQuality: 50
|
||||||
|
spriteMode: 1
|
||||||
|
spriteExtrude: 1
|
||||||
|
spriteMeshType: 1
|
||||||
|
alignment: 0
|
||||||
|
spritePivot: {x: 0.5, y: 0.5}
|
||||||
|
spritePixelsToUnits: 100
|
||||||
|
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
spriteGenerateFallbackPhysicsShape: 1
|
||||||
|
alphaUsage: 1
|
||||||
|
alphaIsTransparency: 1
|
||||||
|
spriteTessellationDetail: -1
|
||||||
|
textureType: 8
|
||||||
|
textureShape: 1
|
||||||
|
singleChannelComponent: 0
|
||||||
|
flipbookRows: 1
|
||||||
|
flipbookColumns: 1
|
||||||
|
maxTextureSizeSet: 0
|
||||||
|
compressionQualitySet: 0
|
||||||
|
textureFormatSet: 0
|
||||||
|
ignorePngGamma: 0
|
||||||
|
applyGammaDecoding: 0
|
||||||
|
swizzle: 50462976
|
||||||
|
cookieLightType: 0
|
||||||
|
platformSettings:
|
||||||
|
- serializedVersion: 3
|
||||||
|
buildTarget: DefaultTexturePlatform
|
||||||
|
maxTextureSize: 2048
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 0
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
ignorePlatformSupport: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
- serializedVersion: 3
|
||||||
|
buildTarget: Standalone
|
||||||
|
maxTextureSize: 2048
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
ignorePlatformSupport: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
- serializedVersion: 3
|
||||||
|
buildTarget: WebGL
|
||||||
|
maxTextureSize: 2048
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
ignorePlatformSupport: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
- serializedVersion: 3
|
||||||
|
buildTarget: Android
|
||||||
|
maxTextureSize: 2048
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
ignorePlatformSupport: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
spriteSheet:
|
||||||
|
serializedVersion: 2
|
||||||
|
sprites: []
|
||||||
|
outline: []
|
||||||
|
physicsShape: []
|
||||||
|
bones: []
|
||||||
|
spriteID: 5e97eb03825dee720800000000000000
|
||||||
|
internalID: 0
|
||||||
|
vertices: []
|
||||||
|
indices:
|
||||||
|
edges: []
|
||||||
|
weights: []
|
||||||
|
secondaryTextures: []
|
||||||
|
nameFileIdTable: {}
|
||||||
|
mipmapLimitGroupName:
|
||||||
|
pSDRemoveMatte: 0
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
Binary file not shown.
|
After Width: | Height: | Size: 1.8 MiB |
|
|
@ -0,0 +1,140 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 02aa49335d2fcbb45ab31069839b45fd
|
||||||
|
TextureImporter:
|
||||||
|
internalIDToNameTable: []
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 13
|
||||||
|
mipmaps:
|
||||||
|
mipMapMode: 0
|
||||||
|
enableMipMap: 0
|
||||||
|
sRGBTexture: 1
|
||||||
|
linearTexture: 0
|
||||||
|
fadeOut: 0
|
||||||
|
borderMipMap: 0
|
||||||
|
mipMapsPreserveCoverage: 0
|
||||||
|
alphaTestReferenceValue: 0.5
|
||||||
|
mipMapFadeDistanceStart: 1
|
||||||
|
mipMapFadeDistanceEnd: 3
|
||||||
|
bumpmap:
|
||||||
|
convertToNormalMap: 0
|
||||||
|
externalNormalMap: 0
|
||||||
|
heightScale: 0.25
|
||||||
|
normalMapFilter: 0
|
||||||
|
flipGreenChannel: 0
|
||||||
|
isReadable: 0
|
||||||
|
streamingMipmaps: 0
|
||||||
|
streamingMipmapsPriority: 0
|
||||||
|
vTOnly: 0
|
||||||
|
ignoreMipmapLimit: 0
|
||||||
|
grayScaleToAlpha: 0
|
||||||
|
generateCubemap: 6
|
||||||
|
cubemapConvolution: 0
|
||||||
|
seamlessCubemap: 0
|
||||||
|
textureFormat: 1
|
||||||
|
maxTextureSize: 2048
|
||||||
|
textureSettings:
|
||||||
|
serializedVersion: 2
|
||||||
|
filterMode: 0
|
||||||
|
aniso: 1
|
||||||
|
mipBias: 0
|
||||||
|
wrapU: 1
|
||||||
|
wrapV: 1
|
||||||
|
wrapW: 0
|
||||||
|
nPOTScale: 0
|
||||||
|
lightmap: 0
|
||||||
|
compressionQuality: 50
|
||||||
|
spriteMode: 1
|
||||||
|
spriteExtrude: 1
|
||||||
|
spriteMeshType: 1
|
||||||
|
alignment: 0
|
||||||
|
spritePivot: {x: 0.5, y: 0.5}
|
||||||
|
spritePixelsToUnits: 100
|
||||||
|
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
spriteGenerateFallbackPhysicsShape: 1
|
||||||
|
alphaUsage: 1
|
||||||
|
alphaIsTransparency: 1
|
||||||
|
spriteTessellationDetail: -1
|
||||||
|
textureType: 8
|
||||||
|
textureShape: 1
|
||||||
|
singleChannelComponent: 0
|
||||||
|
flipbookRows: 1
|
||||||
|
flipbookColumns: 1
|
||||||
|
maxTextureSizeSet: 0
|
||||||
|
compressionQualitySet: 0
|
||||||
|
textureFormatSet: 0
|
||||||
|
ignorePngGamma: 0
|
||||||
|
applyGammaDecoding: 0
|
||||||
|
swizzle: 50462976
|
||||||
|
cookieLightType: 0
|
||||||
|
platformSettings:
|
||||||
|
- serializedVersion: 3
|
||||||
|
buildTarget: DefaultTexturePlatform
|
||||||
|
maxTextureSize: 2048
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 0
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
ignorePlatformSupport: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
- serializedVersion: 3
|
||||||
|
buildTarget: Standalone
|
||||||
|
maxTextureSize: 2048
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
ignorePlatformSupport: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
- serializedVersion: 3
|
||||||
|
buildTarget: WebGL
|
||||||
|
maxTextureSize: 2048
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
ignorePlatformSupport: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
- serializedVersion: 3
|
||||||
|
buildTarget: Android
|
||||||
|
maxTextureSize: 2048
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
ignorePlatformSupport: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
spriteSheet:
|
||||||
|
serializedVersion: 2
|
||||||
|
sprites: []
|
||||||
|
outline: []
|
||||||
|
physicsShape: []
|
||||||
|
bones: []
|
||||||
|
spriteID: 5e97eb03825dee720800000000000000
|
||||||
|
internalID: 0
|
||||||
|
vertices: []
|
||||||
|
indices:
|
||||||
|
edges: []
|
||||||
|
weights: []
|
||||||
|
secondaryTextures: []
|
||||||
|
nameFileIdTable: {}
|
||||||
|
mipmapLimitGroupName:
|
||||||
|
pSDRemoveMatte: 0
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
Loading…
Reference in New Issue