Extract overlay screens to prefabs and validate battle layout
CI / test (push) Successful in 2m8s
Details
CI / test (push) Successful in 2m8s
Details
This commit is contained in:
parent
50487ed3f0
commit
8b813a9d6e
|
|
@ -0,0 +1,77 @@
|
|||
using System.IO;
|
||||
using UnityEditor;
|
||||
using UnityEngine;
|
||||
using UnityEngine.EventSystems;
|
||||
using Vanguard.UI;
|
||||
using Vanguard.UI.Overlays;
|
||||
|
||||
namespace Vanguard.Editor
|
||||
{
|
||||
/// <summary>
|
||||
/// Собирает статические части overlay-экранов в prefab-ассеты.
|
||||
/// Runtime использует их через Resources/Overlays, если они есть.
|
||||
/// </summary>
|
||||
public static class OverlayPrefabBuilder
|
||||
{
|
||||
private const string DirectoryPath = "Assets/Vanguard/Resources/Overlays";
|
||||
|
||||
[MenuItem("Vanguard/Rebuild Overlay Prefabs")]
|
||||
public static void BuildOverlayPrefabs()
|
||||
{
|
||||
Directory.CreateDirectory(DirectoryPath);
|
||||
AssetDatabase.Refresh();
|
||||
|
||||
OverlayPrefabs.Disabled = true;
|
||||
var hadEventSystem = Object.FindAnyObjectByType<EventSystem>() != null;
|
||||
var canvas = UiKit.CreateCanvas("Overlay Prefab Canvas");
|
||||
try
|
||||
{
|
||||
var list = new CardListView(canvas.transform, _ => null);
|
||||
Save(list.Root, "CardListView");
|
||||
|
||||
var detail = new CardDetailOverlay(canvas.transform, _ => null);
|
||||
Save(detail.Root, "CardDetailOverlay");
|
||||
|
||||
var menu = new CardActionMenuView();
|
||||
menu.Build(canvas.transform);
|
||||
Save(menu.Root, "CardActionMenu");
|
||||
|
||||
var zones = new ZoneBlockStripView();
|
||||
zones.Build(
|
||||
canvas.transform,
|
||||
"ZoneBlockStrip",
|
||||
new Vector2(0f, 0f),
|
||||
new Vector2(0f, 0f),
|
||||
Vector2.zero,
|
||||
new Vector2(360f, 108f));
|
||||
Save(zones.Root, "ZoneBlockStrip");
|
||||
}
|
||||
finally
|
||||
{
|
||||
OverlayPrefabs.Disabled = false;
|
||||
Object.DestroyImmediate(canvas.gameObject);
|
||||
if (!hadEventSystem)
|
||||
{
|
||||
var eventSystem = Object.FindAnyObjectByType<EventSystem>();
|
||||
if (eventSystem != null)
|
||||
Object.DestroyImmediate(eventSystem.gameObject);
|
||||
}
|
||||
|
||||
AssetDatabase.SaveAssets();
|
||||
AssetDatabase.Refresh();
|
||||
}
|
||||
|
||||
Debug.Log("Vanguard overlay prefabs rebuilt: " + DirectoryPath);
|
||||
}
|
||||
|
||||
private static void Save(RectTransform root, string name)
|
||||
{
|
||||
if (root == null)
|
||||
return;
|
||||
|
||||
var path = DirectoryPath + "/" + name + ".prefab";
|
||||
root.gameObject.SetActive(true);
|
||||
PrefabUtility.SaveAsPrefabAsset(root.gameObject, path);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 0696144f51d46f647a1cafa3f88f8574
|
||||
|
|
@ -40,6 +40,7 @@ namespace Vanguard.Editor
|
|||
Create<BattleSceneController>("Battle");
|
||||
EnsurePlaymatConfig();
|
||||
EnsureAnimationConfig();
|
||||
OverlayPrefabBuilder.BuildOverlayPrefabs();
|
||||
|
||||
var scenes = new List<EditorBuildSettingsScene>();
|
||||
Add(scenes, BootPath);
|
||||
|
|
|
|||
|
|
@ -0,0 +1,225 @@
|
|||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!1 &4189072559146026
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 8284676636276215201}
|
||||
- component: {fileID: 5174278869726106928}
|
||||
- component: {fileID: 1457697840185301653}
|
||||
- component: {fileID: 5781569561446982080}
|
||||
m_Layer: 0
|
||||
m_Name: Popup
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!224 &8284676636276215201
|
||||
RectTransform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 4189072559146026}
|
||||
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: 8223332831618201117}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 1}
|
||||
m_AnchorMax: {x: 0, y: 1}
|
||||
m_AnchoredPosition: {x: 0, y: 0}
|
||||
m_SizeDelta: {x: 250, y: 380}
|
||||
m_Pivot: {x: 0, y: 1}
|
||||
--- !u!222 &5174278869726106928
|
||||
CanvasRenderer:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 4189072559146026}
|
||||
m_CullTransparentMesh: 1
|
||||
--- !u!114 &1457697840185301653
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 4189072559146026}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: UnityEngine.UI::UnityEngine.UI.Image
|
||||
m_Material: {fileID: 0}
|
||||
m_Color: {r: 0.045, g: 0.06, b: 0.09, a: 0.98}
|
||||
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
|
||||
--- !u!114 &5781569561446982080
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 4189072559146026}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 59f8146938fff824cb5fd77236b75775, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: UnityEngine.UI::UnityEngine.UI.VerticalLayoutGroup
|
||||
m_Padding:
|
||||
m_Left: 8
|
||||
m_Right: 8
|
||||
m_Top: 8
|
||||
m_Bottom: 8
|
||||
m_ChildAlignment: 1
|
||||
m_Spacing: 4
|
||||
m_ChildForceExpandWidth: 1
|
||||
m_ChildForceExpandHeight: 0
|
||||
m_ChildControlWidth: 1
|
||||
m_ChildControlHeight: 1
|
||||
m_ChildScaleWidth: 0
|
||||
m_ChildScaleHeight: 0
|
||||
m_ReverseArrangement: 0
|
||||
--- !u!1 &5845066870428809132
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 8223332831618201117}
|
||||
- component: {fileID: 1549296649820998995}
|
||||
- component: {fileID: 4319441307442638214}
|
||||
- component: {fileID: 4789765823821415850}
|
||||
m_Layer: 0
|
||||
m_Name: CardActionMenu
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!224 &8223332831618201117
|
||||
RectTransform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 5845066870428809132}
|
||||
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: 8284676636276215201}
|
||||
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!222 &1549296649820998995
|
||||
CanvasRenderer:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 5845066870428809132}
|
||||
m_CullTransparentMesh: 1
|
||||
--- !u!114 &4319441307442638214
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 5845066870428809132}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: UnityEngine.UI::UnityEngine.UI.Image
|
||||
m_Material: {fileID: 0}
|
||||
m_Color: {r: 0, g: 0, b: 0, a: 0.01}
|
||||
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
|
||||
--- !u!114 &4789765823821415850
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 5845066870428809132}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: UnityEngine.UI::UnityEngine.UI.Button
|
||||
m_Navigation:
|
||||
m_Mode: 3
|
||||
m_WrapAround: 0
|
||||
m_SelectOnUp: {fileID: 0}
|
||||
m_SelectOnDown: {fileID: 0}
|
||||
m_SelectOnLeft: {fileID: 0}
|
||||
m_SelectOnRight: {fileID: 0}
|
||||
m_Transition: 1
|
||||
m_Colors:
|
||||
m_NormalColor: {r: 1, g: 1, b: 1, a: 1}
|
||||
m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
|
||||
m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1}
|
||||
m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
|
||||
m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608}
|
||||
m_ColorMultiplier: 1
|
||||
m_FadeDuration: 0.1
|
||||
m_SpriteState:
|
||||
m_HighlightedSprite: {fileID: 0}
|
||||
m_PressedSprite: {fileID: 0}
|
||||
m_SelectedSprite: {fileID: 0}
|
||||
m_DisabledSprite: {fileID: 0}
|
||||
m_AnimationTriggers:
|
||||
m_NormalTrigger: Normal
|
||||
m_HighlightedTrigger: Highlighted
|
||||
m_PressedTrigger: Pressed
|
||||
m_SelectedTrigger: Selected
|
||||
m_DisabledTrigger: Disabled
|
||||
m_Interactable: 1
|
||||
m_TargetGraphic: {fileID: 4319441307442638214}
|
||||
m_OnClick:
|
||||
m_PersistentCalls:
|
||||
m_Calls: []
|
||||
|
|
@ -0,0 +1,7 @@
|
|||
fileFormatVersion: 2
|
||||
guid: d73e64826a00d3242aa26cdcb598ff83
|
||||
PrefabImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
File diff suppressed because it is too large
Load Diff
|
|
@ -0,0 +1,7 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 5d9f16ab4b6bf4742a60f59af52f3118
|
||||
PrefabImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
|
|
@ -0,0 +1,918 @@
|
|||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!1 &1469719734719151966
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 8170022988952934391}
|
||||
- component: {fileID: 1222730959284511770}
|
||||
- component: {fileID: 4259544594302645894}
|
||||
m_Layer: 0
|
||||
m_Name: CardListView
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!224 &8170022988952934391
|
||||
RectTransform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1469719734719151966}
|
||||
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: 7887127973873664564}
|
||||
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!222 &1222730959284511770
|
||||
CanvasRenderer:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1469719734719151966}
|
||||
m_CullTransparentMesh: 1
|
||||
--- !u!114 &4259544594302645894
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1469719734719151966}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: UnityEngine.UI::UnityEngine.UI.Image
|
||||
m_Material: {fileID: 0}
|
||||
m_Color: {r: 0, g: 0, b: 0, a: 0.78}
|
||||
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
|
||||
--- !u!1 &3553432835196041209
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 3859181713588757330}
|
||||
- component: {fileID: 7630574021367947806}
|
||||
- component: {fileID: 1599056814793912980}
|
||||
m_Layer: 0
|
||||
m_Name: Content
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!224 &3859181713588757330
|
||||
RectTransform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 3553432835196041209}
|
||||
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: 1249341605781352115}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 0.5}
|
||||
m_AnchorMax: {x: 0, y: 0.5}
|
||||
m_AnchoredPosition: {x: 0, y: 0}
|
||||
m_SizeDelta: {x: 0, y: 0}
|
||||
m_Pivot: {x: 0, y: 0.5}
|
||||
--- !u!114 &7630574021367947806
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 3553432835196041209}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 30649d3a9faa99c48a7b1166b86bf2a0, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: UnityEngine.UI::UnityEngine.UI.HorizontalLayoutGroup
|
||||
m_Padding:
|
||||
m_Left: 4
|
||||
m_Right: 4
|
||||
m_Top: 4
|
||||
m_Bottom: 4
|
||||
m_ChildAlignment: 3
|
||||
m_Spacing: 10
|
||||
m_ChildForceExpandWidth: 0
|
||||
m_ChildForceExpandHeight: 0
|
||||
m_ChildControlWidth: 1
|
||||
m_ChildControlHeight: 1
|
||||
m_ChildScaleWidth: 0
|
||||
m_ChildScaleHeight: 0
|
||||
m_ReverseArrangement: 0
|
||||
--- !u!114 &1599056814793912980
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 3553432835196041209}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 3245ec927659c4140ac4f8d17403cc18, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: UnityEngine.UI::UnityEngine.UI.ContentSizeFitter
|
||||
m_HorizontalFit: 2
|
||||
m_VerticalFit: 0
|
||||
--- !u!1 &4641633941445230361
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 7887127973873664564}
|
||||
- component: {fileID: 3430512985456936575}
|
||||
- component: {fileID: 4544749884208319684}
|
||||
- component: {fileID: 4313942877994018890}
|
||||
m_Layer: 0
|
||||
m_Name: CardListPanel
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!224 &7887127973873664564
|
||||
RectTransform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 4641633941445230361}
|
||||
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: 3845338837237151509}
|
||||
- {fileID: 8509357265976112098}
|
||||
m_Father: {fileID: 8170022988952934391}
|
||||
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: 0}
|
||||
m_SizeDelta: {x: 980, y: 560}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!222 &3430512985456936575
|
||||
CanvasRenderer:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 4641633941445230361}
|
||||
m_CullTransparentMesh: 1
|
||||
--- !u!114 &4544749884208319684
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 4641633941445230361}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: UnityEngine.UI::UnityEngine.UI.Image
|
||||
m_Material: {fileID: 0}
|
||||
m_Color: {r: 0.045, g: 0.06, b: 0.09, 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_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
|
||||
--- !u!114 &4313942877994018890
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 4641633941445230361}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 59f8146938fff824cb5fd77236b75775, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: UnityEngine.UI::UnityEngine.UI.VerticalLayoutGroup
|
||||
m_Padding:
|
||||
m_Left: 16
|
||||
m_Right: 16
|
||||
m_Top: 16
|
||||
m_Bottom: 16
|
||||
m_ChildAlignment: 1
|
||||
m_Spacing: 10
|
||||
m_ChildForceExpandWidth: 1
|
||||
m_ChildForceExpandHeight: 0
|
||||
m_ChildControlWidth: 1
|
||||
m_ChildControlHeight: 1
|
||||
m_ChildScaleWidth: 0
|
||||
m_ChildScaleHeight: 0
|
||||
m_ReverseArrangement: 0
|
||||
--- !u!1 &4772711393317449610
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 8509357265976112098}
|
||||
- component: {fileID: 8351436969149606757}
|
||||
- component: {fileID: 4223214800367845870}
|
||||
- component: {fileID: 262283147895747376}
|
||||
- component: {fileID: 4639245205621282684}
|
||||
m_Layer: 0
|
||||
m_Name: CardScroll
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!224 &8509357265976112098
|
||||
RectTransform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 4772711393317449610}
|
||||
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: 1249341605781352115}
|
||||
m_Father: {fileID: 7887127973873664564}
|
||||
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 &8351436969149606757
|
||||
CanvasRenderer:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 4772711393317449610}
|
||||
m_CullTransparentMesh: 1
|
||||
--- !u!114 &4223214800367845870
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 4772711393317449610}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: UnityEngine.UI::UnityEngine.UI.Image
|
||||
m_Material: {fileID: 0}
|
||||
m_Color: {r: 0, g: 0, b: 0, a: 0.01}
|
||||
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
|
||||
--- !u!114 &262283147895747376
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 4772711393317449610}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 1aa08ab6e0800fa44ae55d278d1423e3, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: UnityEngine.UI::UnityEngine.UI.ScrollRect
|
||||
m_Content: {fileID: 3859181713588757330}
|
||||
m_Horizontal: 1
|
||||
m_Vertical: 0
|
||||
m_MovementType: 2
|
||||
m_Elasticity: 0.1
|
||||
m_Inertia: 1
|
||||
m_DecelerationRate: 0.135
|
||||
m_ScrollSensitivity: 30
|
||||
m_Viewport: {fileID: 1249341605781352115}
|
||||
m_HorizontalScrollbar: {fileID: 0}
|
||||
m_VerticalScrollbar: {fileID: 0}
|
||||
m_HorizontalScrollbarVisibility: 0
|
||||
m_VerticalScrollbarVisibility: 0
|
||||
m_HorizontalScrollbarSpacing: 0
|
||||
m_VerticalScrollbarSpacing: 0
|
||||
m_OnValueChanged:
|
||||
m_PersistentCalls:
|
||||
m_Calls: []
|
||||
--- !u!114 &4639245205621282684
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 4772711393317449610}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: UnityEngine.UI::UnityEngine.UI.LayoutElement
|
||||
m_IgnoreLayout: 0
|
||||
m_MinWidth: -1
|
||||
m_MinHeight: 400
|
||||
m_PreferredWidth: -1
|
||||
m_PreferredHeight: -1
|
||||
m_FlexibleWidth: -1
|
||||
m_FlexibleHeight: 1
|
||||
m_LayoutPriority: 1
|
||||
m_MaxWidth: -1
|
||||
m_MaxHeight: -1
|
||||
--- !u!1 &4997837896461458183
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 3036137187819422772}
|
||||
- component: {fileID: 3678738700295536158}
|
||||
- component: {fileID: 5958573315790029210}
|
||||
- component: {fileID: 4807482183672435}
|
||||
- component: {fileID: 8174026932308914185}
|
||||
m_Layer: 0
|
||||
m_Name: Close
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!224 &3036137187819422772
|
||||
RectTransform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 4997837896461458183}
|
||||
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: 6506596215124840048}
|
||||
m_Father: {fileID: 3845338837237151509}
|
||||
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: 0}
|
||||
m_SizeDelta: {x: 100, y: 100}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!222 &3678738700295536158
|
||||
CanvasRenderer:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 4997837896461458183}
|
||||
m_CullTransparentMesh: 1
|
||||
--- !u!114 &5958573315790029210
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 4997837896461458183}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: UnityEngine.UI::UnityEngine.UI.Image
|
||||
m_Material: {fileID: 0}
|
||||
m_Color: {r: 0.2, g: 0.42, b: 0.78, 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_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
|
||||
--- !u!114 &4807482183672435
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 4997837896461458183}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: UnityEngine.UI::UnityEngine.UI.Button
|
||||
m_Navigation:
|
||||
m_Mode: 3
|
||||
m_WrapAround: 0
|
||||
m_SelectOnUp: {fileID: 0}
|
||||
m_SelectOnDown: {fileID: 0}
|
||||
m_SelectOnLeft: {fileID: 0}
|
||||
m_SelectOnRight: {fileID: 0}
|
||||
m_Transition: 1
|
||||
m_Colors:
|
||||
m_NormalColor: {r: 1, g: 1, b: 1, a: 1}
|
||||
m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
|
||||
m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1}
|
||||
m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
|
||||
m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608}
|
||||
m_ColorMultiplier: 1
|
||||
m_FadeDuration: 0.1
|
||||
m_SpriteState:
|
||||
m_HighlightedSprite: {fileID: 0}
|
||||
m_PressedSprite: {fileID: 0}
|
||||
m_SelectedSprite: {fileID: 0}
|
||||
m_DisabledSprite: {fileID: 0}
|
||||
m_AnimationTriggers:
|
||||
m_NormalTrigger: Normal
|
||||
m_HighlightedTrigger: Highlighted
|
||||
m_PressedTrigger: Pressed
|
||||
m_SelectedTrigger: Selected
|
||||
m_DisabledTrigger: Disabled
|
||||
m_Interactable: 1
|
||||
m_TargetGraphic: {fileID: 5958573315790029210}
|
||||
m_OnClick:
|
||||
m_PersistentCalls:
|
||||
m_Calls: []
|
||||
--- !u!114 &8174026932308914185
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 4997837896461458183}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: UnityEngine.UI::UnityEngine.UI.LayoutElement
|
||||
m_IgnoreLayout: 0
|
||||
m_MinWidth: -1
|
||||
m_MinHeight: -1
|
||||
m_PreferredWidth: 120
|
||||
m_PreferredHeight: 40
|
||||
m_FlexibleWidth: 0
|
||||
m_FlexibleHeight: -1
|
||||
m_LayoutPriority: 1
|
||||
m_MaxWidth: -1
|
||||
m_MaxHeight: -1
|
||||
--- !u!1 &6204793766946580261
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 3845338837237151509}
|
||||
- component: {fileID: 199230275247935507}
|
||||
- component: {fileID: 7363758439426580613}
|
||||
- component: {fileID: 3847788887417467308}
|
||||
- component: {fileID: 2445745248759025323}
|
||||
m_Layer: 0
|
||||
m_Name: Header
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!224 &3845338837237151509
|
||||
RectTransform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 6204793766946580261}
|
||||
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: 3451897472484662775}
|
||||
- {fileID: 3036137187819422772}
|
||||
m_Father: {fileID: 7887127973873664564}
|
||||
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 &199230275247935507
|
||||
CanvasRenderer:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 6204793766946580261}
|
||||
m_CullTransparentMesh: 1
|
||||
--- !u!114 &7363758439426580613
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 6204793766946580261}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: UnityEngine.UI::UnityEngine.UI.Image
|
||||
m_Material: {fileID: 0}
|
||||
m_Color: {r: 0, g: 0, b: 0, 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
|
||||
--- !u!114 &3847788887417467308
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 6204793766946580261}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 30649d3a9faa99c48a7b1166b86bf2a0, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: UnityEngine.UI::UnityEngine.UI.HorizontalLayoutGroup
|
||||
m_Padding:
|
||||
m_Left: 0
|
||||
m_Right: 0
|
||||
m_Top: 0
|
||||
m_Bottom: 0
|
||||
m_ChildAlignment: 4
|
||||
m_Spacing: 10
|
||||
m_ChildForceExpandWidth: 1
|
||||
m_ChildForceExpandHeight: 0
|
||||
m_ChildControlWidth: 1
|
||||
m_ChildControlHeight: 1
|
||||
m_ChildScaleWidth: 0
|
||||
m_ChildScaleHeight: 0
|
||||
m_ReverseArrangement: 0
|
||||
--- !u!114 &2445745248759025323
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 6204793766946580261}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: UnityEngine.UI::UnityEngine.UI.LayoutElement
|
||||
m_IgnoreLayout: 0
|
||||
m_MinWidth: -1
|
||||
m_MinHeight: -1
|
||||
m_PreferredWidth: -1
|
||||
m_PreferredHeight: 44
|
||||
m_FlexibleWidth: 1
|
||||
m_FlexibleHeight: -1
|
||||
m_LayoutPriority: 1
|
||||
m_MaxWidth: -1
|
||||
m_MaxHeight: -1
|
||||
--- !u!1 &6325998095679041594
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 1249341605781352115}
|
||||
- component: {fileID: 3735377383881924944}
|
||||
m_Layer: 0
|
||||
m_Name: Viewport
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!224 &1249341605781352115
|
||||
RectTransform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 6325998095679041594}
|
||||
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: 3859181713588757330}
|
||||
m_Father: {fileID: 8509357265976112098}
|
||||
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 &3735377383881924944
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 6325998095679041594}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 3312d7739989d2b4e91e6319e9a96d76, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: UnityEngine.UI::UnityEngine.UI.RectMask2D
|
||||
m_Padding: {x: 0, y: 0, z: 0, w: 0}
|
||||
m_Softness: {x: 0, y: 0}
|
||||
--- !u!1 &7783630706378024170
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 6506596215124840048}
|
||||
- component: {fileID: 557565527712788877}
|
||||
- component: {fileID: 590656949008087397}
|
||||
- component: {fileID: 8940946843088443230}
|
||||
m_Layer: 0
|
||||
m_Name: Label
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!224 &6506596215124840048
|
||||
RectTransform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 7783630706378024170}
|
||||
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: 3036137187819422772}
|
||||
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 &557565527712788877
|
||||
CanvasRenderer:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 7783630706378024170}
|
||||
m_CullTransparentMesh: 1
|
||||
--- !u!114 &590656949008087397
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 7783630706378024170}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: UnityEngine.UI::UnityEngine.UI.Text
|
||||
m_Material: {fileID: 0}
|
||||
m_Color: {r: 1, g: 1, b: 1, a: 1}
|
||||
m_RaycastTarget: 0
|
||||
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
|
||||
m_Maskable: 1
|
||||
m_OnCullStateChanged:
|
||||
m_PersistentCalls:
|
||||
m_Calls: []
|
||||
m_FontData:
|
||||
m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
|
||||
m_FontSize: 16
|
||||
m_FontStyle: 0
|
||||
m_BestFit: 0
|
||||
m_MinSize: 10
|
||||
m_MaxSize: 40
|
||||
m_Alignment: 4
|
||||
m_AlignByGeometry: 0
|
||||
m_RichText: 1
|
||||
m_HorizontalOverflow: 0
|
||||
m_VerticalOverflow: 1
|
||||
m_LineSpacing: 1
|
||||
m_Text: "\u0417\u0430\u043A\u0440\u044B\u0442\u044C"
|
||||
--- !u!114 &8940946843088443230
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 7783630706378024170}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 0}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: Vanguard.Runtime::Vanguard.UI.LocalizedText
|
||||
--- !u!1 &9132900455699837241
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 3451897472484662775}
|
||||
- component: {fileID: 5914423097922492218}
|
||||
- component: {fileID: 2895284629386790160}
|
||||
- component: {fileID: 2474737544313137945}
|
||||
- component: {fileID: 656849464713321005}
|
||||
m_Layer: 0
|
||||
m_Name: Title
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!224 &3451897472484662775
|
||||
RectTransform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 9132900455699837241}
|
||||
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: 3845338837237151509}
|
||||
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: 0}
|
||||
m_SizeDelta: {x: 100, y: 100}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!222 &5914423097922492218
|
||||
CanvasRenderer:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 9132900455699837241}
|
||||
m_CullTransparentMesh: 1
|
||||
--- !u!114 &2895284629386790160
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 9132900455699837241}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: UnityEngine.UI::UnityEngine.UI.Text
|
||||
m_Material: {fileID: 0}
|
||||
m_Color: {r: 1, g: 1, b: 1, a: 1}
|
||||
m_RaycastTarget: 0
|
||||
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
|
||||
m_Maskable: 1
|
||||
m_OnCullStateChanged:
|
||||
m_PersistentCalls:
|
||||
m_Calls: []
|
||||
m_FontData:
|
||||
m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
|
||||
m_FontSize: 24
|
||||
m_FontStyle: 1
|
||||
m_BestFit: 0
|
||||
m_MinSize: 10
|
||||
m_MaxSize: 40
|
||||
m_Alignment: 3
|
||||
m_AlignByGeometry: 0
|
||||
m_RichText: 1
|
||||
m_HorizontalOverflow: 0
|
||||
m_VerticalOverflow: 1
|
||||
m_LineSpacing: 1
|
||||
m_Text: "\u041A\u0430\u0440\u0442\u044B"
|
||||
--- !u!114 &2474737544313137945
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 9132900455699837241}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 0}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: Vanguard.Runtime::Vanguard.UI.LocalizedText
|
||||
--- !u!114 &656849464713321005
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 9132900455699837241}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: UnityEngine.UI::UnityEngine.UI.LayoutElement
|
||||
m_IgnoreLayout: 0
|
||||
m_MinWidth: -1
|
||||
m_MinHeight: -1
|
||||
m_PreferredWidth: -1
|
||||
m_PreferredHeight: 44
|
||||
m_FlexibleWidth: 1
|
||||
m_FlexibleHeight: -1
|
||||
m_LayoutPriority: 1
|
||||
m_MaxWidth: -1
|
||||
m_MaxHeight: -1
|
||||
|
|
@ -0,0 +1,7 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 2c887fa3582706442bd825731aff3340
|
||||
PrefabImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
File diff suppressed because it is too large
Load Diff
|
|
@ -0,0 +1,7 @@
|
|||
fileFormatVersion: 2
|
||||
guid: ce2d32c68ec33dd42917fe8d3c4265bd
|
||||
PrefabImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
|
|
@ -28,15 +28,26 @@ namespace Vanguard.UI.Overlays
|
|||
|
||||
public bool IsVisible => _root != null && _root.gameObject.activeSelf;
|
||||
|
||||
public RectTransform Root => _root;
|
||||
|
||||
public void Build(Transform parent)
|
||||
{
|
||||
var prefabRoot = OverlayPrefabs.Instantiate("CardActionMenu", parent);
|
||||
if (prefabRoot != null)
|
||||
{
|
||||
_root = prefabRoot;
|
||||
_popup = (RectTransform)_root.Find("Popup");
|
||||
WireBackdrop();
|
||||
_root.gameObject.SetActive(false);
|
||||
return;
|
||||
}
|
||||
|
||||
_root = UiKit.CreatePanel(parent, "CardActionMenu", new Color(0f, 0f, 0f, 0.01f));
|
||||
var image = _root.GetComponent<Image>();
|
||||
image.raycastTarget = true;
|
||||
|
||||
var backdrop = _root.gameObject.AddComponent<Button>();
|
||||
backdrop.targetGraphic = image;
|
||||
backdrop.onClick.AddListener(Hide);
|
||||
|
||||
_popup = UiKit.CreatePanel(_root, "Popup", new Color(0.045f, 0.06f, 0.09f, 0.98f));
|
||||
_popup.anchorMin = new Vector2(0f, 1f);
|
||||
|
|
@ -45,9 +56,29 @@ namespace Vanguard.UI.Overlays
|
|||
_popup.sizeDelta = new Vector2(250f, 380f);
|
||||
UiKit.AddVerticalLayout(_popup, 8, 4);
|
||||
|
||||
WireBackdrop();
|
||||
_root.gameObject.SetActive(false);
|
||||
}
|
||||
|
||||
private void WireBackdrop()
|
||||
{
|
||||
if (_root == null)
|
||||
return;
|
||||
|
||||
var image = _root.GetComponent<Image>();
|
||||
if (image != null)
|
||||
image.raycastTarget = true;
|
||||
|
||||
var backdrop = _root.GetComponent<Button>();
|
||||
if (backdrop == null)
|
||||
{
|
||||
backdrop = _root.gameObject.AddComponent<Button>();
|
||||
backdrop.targetGraphic = image;
|
||||
}
|
||||
|
||||
backdrop.onClick.AddListener(Hide);
|
||||
}
|
||||
|
||||
public void Show(
|
||||
Vector2 screenPosition,
|
||||
string title,
|
||||
|
|
|
|||
|
|
@ -23,6 +23,21 @@ namespace Vanguard.UI.Overlays
|
|||
{
|
||||
_catalog = catalog;
|
||||
|
||||
var prefabRoot = OverlayPrefabs.Instantiate("CardDetailOverlay", parent);
|
||||
if (prefabRoot != null)
|
||||
{
|
||||
_root = prefabRoot;
|
||||
_name = _root.Find("CardDetailPanel/Header/Name").GetComponent<Text>();
|
||||
_art = _root.Find("CardDetailPanel/Body/Art").GetComponent<Image>();
|
||||
_meta = _root.Find("CardDetailPanel/Body/Info/Meta").GetComponent<Text>();
|
||||
_stats = _root.Find("CardDetailPanel/Body/Info/Stats").GetComponent<Text>();
|
||||
_ability = _root.Find("CardDetailPanel/Body/Info/Ability").GetComponent<Text>();
|
||||
WireBack(_root.Find("CardDetailPanel/Header/Back").GetComponent<Button>());
|
||||
WireBack(_root.Find("CardDetailPanel/Header/Close").GetComponent<Button>());
|
||||
_root.gameObject.SetActive(false);
|
||||
return;
|
||||
}
|
||||
|
||||
_root = UiKit.CreatePanel(parent, "CardDetailOverlay", new Color(0f, 0f, 0f, 0.82f));
|
||||
var panel = UiKit.CreateCenteredCard(
|
||||
_root,
|
||||
|
|
@ -40,13 +55,15 @@ namespace Vanguard.UI.Overlays
|
|||
UiKit.MakeLiteral(_name);
|
||||
UiKit.SetPreferredHeight(_name, 44f);
|
||||
|
||||
var back = UiKit.CreateButton(header, "Back", "Назад", () => _onBack?.Invoke(), 16);
|
||||
var back = UiKit.CreateButton(header, "Back", "Назад", null, 16);
|
||||
var backElement = UiKit.SetPreferredHeight(back, 40f, 0f);
|
||||
backElement.preferredWidth = 110f;
|
||||
WireBack(back);
|
||||
|
||||
var close = UiKit.CreateButton(header, "Close", "Закрыть", () => _onBack?.Invoke(), 16);
|
||||
var close = UiKit.CreateButton(header, "Close", "Закрыть", null, 16);
|
||||
var closeElement = UiKit.SetPreferredHeight(close, 40f, 0f);
|
||||
closeElement.preferredWidth = 110f;
|
||||
WireBack(close);
|
||||
|
||||
var body = UiKit.CreatePanel(panel, "Body", Color.clear);
|
||||
var bodyElement = body.gameObject.AddComponent<LayoutElement>();
|
||||
|
|
@ -89,6 +106,14 @@ namespace Vanguard.UI.Overlays
|
|||
|
||||
public bool IsVisible => _root.gameObject.activeSelf;
|
||||
|
||||
public RectTransform Root => _root;
|
||||
|
||||
private void WireBack(Button button)
|
||||
{
|
||||
if (button != null)
|
||||
button.onClick.AddListener(() => _onBack?.Invoke());
|
||||
}
|
||||
|
||||
public void Show(CardListEntry entry, Action onBack)
|
||||
{
|
||||
_onBack = onBack;
|
||||
|
|
|
|||
|
|
@ -26,6 +26,18 @@ namespace Vanguard.UI.Overlays
|
|||
{
|
||||
_catalog = catalog;
|
||||
|
||||
var prefabRoot = OverlayPrefabs.Instantiate("CardListView", parent);
|
||||
if (prefabRoot != null)
|
||||
{
|
||||
_root = prefabRoot;
|
||||
_title = _root.Find("CardListPanel/Header/Title").GetComponent<Text>();
|
||||
_content = (RectTransform)_root.Find(
|
||||
"CardListPanel/CardScroll/Viewport/Content");
|
||||
WireClose(_root.Find("CardListPanel/Header/Close").GetComponent<Button>());
|
||||
_root.gameObject.SetActive(false);
|
||||
return;
|
||||
}
|
||||
|
||||
_root = UiKit.CreatePanel(parent, "CardListView", new Color(0f, 0f, 0f, 0.78f));
|
||||
var panel = UiKit.CreateCenteredCard(
|
||||
_root,
|
||||
|
|
@ -48,9 +60,10 @@ namespace Vanguard.UI.Overlays
|
|||
_title.fontStyle = FontStyle.Bold;
|
||||
UiKit.SetPreferredHeight(_title, 44f);
|
||||
|
||||
var close = UiKit.CreateButton(header, "Close", "Закрыть", () => _onClose?.Invoke(), 16);
|
||||
var close = UiKit.CreateButton(header, "Close", "Закрыть", null, 16);
|
||||
var closeElement = UiKit.SetPreferredHeight(close, 40f, 0f);
|
||||
closeElement.preferredWidth = 120f;
|
||||
WireClose(close);
|
||||
|
||||
var scroll = UiKit.CreateHorizontalScrollView(panel, "CardScroll", out _content, 10f);
|
||||
var scrollElement = scroll.gameObject.AddComponent<LayoutElement>();
|
||||
|
|
@ -60,6 +73,14 @@ namespace Vanguard.UI.Overlays
|
|||
_root.gameObject.SetActive(false);
|
||||
}
|
||||
|
||||
public RectTransform Root => _root;
|
||||
|
||||
private void WireClose(Button close)
|
||||
{
|
||||
if (close != null)
|
||||
close.onClick.AddListener(() => _onClose?.Invoke());
|
||||
}
|
||||
|
||||
public bool IsVisible => _root.gameObject.activeSelf;
|
||||
|
||||
public void Show(
|
||||
|
|
|
|||
|
|
@ -0,0 +1,27 @@
|
|||
using UnityEngine;
|
||||
|
||||
namespace Vanguard.UI.Overlays
|
||||
{
|
||||
/// <summary>
|
||||
/// Загружает статические части overlay-экранов из Resources/Overlays.
|
||||
/// Если prefab ещё не собран, views строят ту же иерархию кодом.
|
||||
/// </summary>
|
||||
public static class OverlayPrefabs
|
||||
{
|
||||
public static bool Disabled { get; set; }
|
||||
|
||||
public static RectTransform Instantiate(string name, Transform parent)
|
||||
{
|
||||
if (Disabled)
|
||||
return null;
|
||||
|
||||
var prefab = Resources.Load<GameObject>("Overlays/" + name);
|
||||
if (prefab == null)
|
||||
return null;
|
||||
|
||||
var instance = Object.Instantiate(prefab, parent, false);
|
||||
instance.name = name;
|
||||
return (RectTransform)instance.transform;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 31b17b9cddb025547a7e92db714d7173
|
||||
|
|
@ -39,16 +39,18 @@ namespace Vanguard.UI.Overlays
|
|||
Vector2 position,
|
||||
Vector2 size)
|
||||
{
|
||||
Root = UiKit.CreatePanel(parent, name, new Color(0.02f, 0.035f, 0.055f, 0.82f));
|
||||
Root.anchorMin = anchor;
|
||||
Root.anchorMax = anchor;
|
||||
Root.pivot = pivot;
|
||||
Root.anchoredPosition = position;
|
||||
Root.sizeDelta = size;
|
||||
var prefabRoot = OverlayPrefabs.Instantiate("ZoneBlockStrip", parent);
|
||||
if (prefabRoot != null)
|
||||
{
|
||||
Root = prefabRoot;
|
||||
Root.name = name;
|
||||
ApplyLayout(anchor, pivot, position, size);
|
||||
WireButtons();
|
||||
return;
|
||||
}
|
||||
|
||||
var image = Root.GetComponent<Image>();
|
||||
if (image != null)
|
||||
image.raycastTarget = false;
|
||||
Root = UiKit.CreatePanel(parent, name, new Color(0.02f, 0.035f, 0.055f, 0.82f));
|
||||
ApplyLayout(anchor, pivot, position, size);
|
||||
|
||||
UiKit.AddVerticalLayout(Root, 8, 4);
|
||||
|
||||
|
|
@ -63,23 +65,72 @@ namespace Vanguard.UI.Overlays
|
|||
UiKit.MakeLiteral(_header);
|
||||
UiKit.SetPreferredHeight(_header, 20f);
|
||||
|
||||
var firstRow = CreateRow("Row1");
|
||||
var secondRow = CreateRow("Row2");
|
||||
CreateRow("Row1");
|
||||
CreateRow("Row2");
|
||||
CreateZoneButtons();
|
||||
WireButtons();
|
||||
}
|
||||
|
||||
private void CreateZoneButtons()
|
||||
{
|
||||
for (var i = 0; i < Zones.Length; i++)
|
||||
{
|
||||
var zone = Zones[i];
|
||||
var row = Root.Find(i < 4 ? "Row1" : "Row2");
|
||||
UiKit.CreateButton(
|
||||
row,
|
||||
"Zone_" + zone,
|
||||
string.Empty,
|
||||
null,
|
||||
13);
|
||||
}
|
||||
}
|
||||
|
||||
private void ApplyLayout(
|
||||
Vector2 anchor,
|
||||
Vector2 pivot,
|
||||
Vector2 position,
|
||||
Vector2 size)
|
||||
{
|
||||
Root.anchorMin = anchor;
|
||||
Root.anchorMax = anchor;
|
||||
Root.pivot = pivot;
|
||||
Root.anchoredPosition = position;
|
||||
Root.sizeDelta = size;
|
||||
|
||||
var image = Root.GetComponent<Image>();
|
||||
if (image != null)
|
||||
image.raycastTarget = false;
|
||||
}
|
||||
|
||||
private void WireButtons()
|
||||
{
|
||||
_header = Root.Find("Header")?.GetComponent<Text>();
|
||||
if (_header != null)
|
||||
{
|
||||
_header.fontStyle = FontStyle.Bold;
|
||||
UiKit.MakeLiteral(_header);
|
||||
}
|
||||
|
||||
for (var i = 0; i < Zones.Length; i++)
|
||||
{
|
||||
var zone = Zones[i];
|
||||
var row = i < 4 ? firstRow : secondRow;
|
||||
var button = UiKit.CreateButton(
|
||||
row,
|
||||
"Zone_" + zone,
|
||||
string.Empty,
|
||||
() => ZoneClicked?.Invoke(zone),
|
||||
13);
|
||||
var element = UiKit.SetPreferredHeight(button, 32f);
|
||||
var row = i < 4 ? "Row1" : "Row2";
|
||||
var button = Root.Find(row + "/Zone_" + zone)?.GetComponent<Button>();
|
||||
if (button == null)
|
||||
continue;
|
||||
|
||||
var element = button.GetComponent<LayoutElement>();
|
||||
if (element == null)
|
||||
element = button.gameObject.AddComponent<LayoutElement>();
|
||||
element.preferredHeight = 32f;
|
||||
element.preferredWidth = i < 4 ? 80f : 108f;
|
||||
|
||||
_labels[zone] = button.GetComponentInChildren<Text>();
|
||||
UiKit.MakeLiteral(_labels[zone]);
|
||||
if (_labels[zone] != null)
|
||||
UiKit.MakeLiteral(_labels[zone]);
|
||||
|
||||
button.onClick.AddListener(() => ZoneClicked?.Invoke(zone));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -176,7 +176,8 @@ namespace Vanguard.UI
|
|||
|
||||
var button = go.GetComponent<Button>();
|
||||
button.targetGraphic = image;
|
||||
button.onClick.AddListener(onClick);
|
||||
if (onClick != null)
|
||||
button.onClick.AddListener(onClick);
|
||||
|
||||
var text = CreateText(rect, "Label", label, fontSize, Color.white);
|
||||
Stretch(text.rectTransform);
|
||||
|
|
|
|||
|
|
@ -67,7 +67,8 @@ namespace Vanguard.Tests
|
|||
Assert.IsTrue(Exists("CardDetailOverlay"));
|
||||
|
||||
var back = Resources.FindObjectsOfTypeAll<Button>()
|
||||
.FirstOrDefault(button => button.name == "Back");
|
||||
.FirstOrDefault(button => button.name == "Back"
|
||||
&& button.gameObject.scene.IsValid());
|
||||
Assert.IsNotNull(back);
|
||||
back.onClick.Invoke();
|
||||
Assert.IsTrue(Exists("CardListView"));
|
||||
|
|
@ -83,6 +84,23 @@ namespace Vanguard.Tests
|
|||
}
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Overlay_Prefabs_Are_Available()
|
||||
{
|
||||
foreach (var name in new[]
|
||||
{
|
||||
"CardListView",
|
||||
"CardDetailOverlay",
|
||||
"CardActionMenu",
|
||||
"ZoneBlockStrip",
|
||||
})
|
||||
{
|
||||
Assert.IsNotNull(
|
||||
Resources.Load<GameObject>("Overlays/" + name),
|
||||
name);
|
||||
}
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Animation_Config_Asset_Is_Loaded_From_Resources()
|
||||
{
|
||||
|
|
|
|||
|
|
@ -123,6 +123,72 @@ namespace Vanguard.Tests
|
|||
Object.DestroyImmediate(go);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Battle_Layout_Fits_Reference_Resolution()
|
||||
{
|
||||
var config = new AppConfig();
|
||||
config.Load();
|
||||
var tokens = new TokenStore();
|
||||
var api = new ApiClient(config, tokens);
|
||||
var player = new PlayerState();
|
||||
var auth = new AuthService(api, tokens, player);
|
||||
var meta = new MetaService(api, player);
|
||||
var canvas = UiKit.CreateCanvas("Layout Test Canvas");
|
||||
|
||||
try
|
||||
{
|
||||
var battle = new BattleView(canvas.transform, meta, () => { });
|
||||
var screen = Resources.FindObjectsOfTypeAll<GameObject>()
|
||||
.First(go => go.name == "BattleScreen");
|
||||
screen.SetActive(true);
|
||||
|
||||
var self = ReferenceRect(FindRect("ZoneBlocksSelf"));
|
||||
var opponent = ReferenceRect(FindRect("ZoneBlocksOpponent"));
|
||||
var phase = ReferenceRect(FindRect("PhasePanel"));
|
||||
var stats = ReferenceRect(FindRect("CombatStats"));
|
||||
|
||||
AssertWithinScreen(self, "self zones");
|
||||
AssertWithinScreen(opponent, "opponent zones");
|
||||
AssertWithinScreen(phase, "phase panel");
|
||||
AssertWithinScreen(stats, "combat stats");
|
||||
Assert.IsFalse(self.Overlaps(opponent));
|
||||
Assert.IsFalse(self.Overlaps(phase));
|
||||
Assert.IsFalse(opponent.Overlaps(phase));
|
||||
Assert.IsFalse(opponent.Overlaps(stats));
|
||||
Assert.IsFalse(phase.Overlaps(stats));
|
||||
}
|
||||
finally
|
||||
{
|
||||
Object.DestroyImmediate(canvas.gameObject);
|
||||
Cleanup();
|
||||
}
|
||||
}
|
||||
|
||||
private static RectTransform FindRect(string name) =>
|
||||
Resources.FindObjectsOfTypeAll<GameObject>()
|
||||
.Where(go => go.scene.IsValid() && go.name == name)
|
||||
.Select(go => go.GetComponent<RectTransform>())
|
||||
.First(rect => rect != null);
|
||||
|
||||
private static Rect ReferenceRect(RectTransform rect)
|
||||
{
|
||||
var size = rect.sizeDelta;
|
||||
var anchor = new Vector2(
|
||||
Mathf.Lerp(0f, 1920f, rect.anchorMin.x),
|
||||
Mathf.Lerp(0f, 1080f, rect.anchorMin.y));
|
||||
return new Rect(
|
||||
anchor + rect.anchoredPosition - Vector2.Scale(size, rect.pivot),
|
||||
size);
|
||||
}
|
||||
|
||||
private static void AssertWithinScreen(Rect rect, string name)
|
||||
{
|
||||
Assert.GreaterOrEqual(rect.xMin, 0f, name + " left");
|
||||
Assert.GreaterOrEqual(rect.yMin, 0f, name + " bottom");
|
||||
Assert.LessOrEqual(rect.xMax, 1920f, name + " right");
|
||||
Assert.LessOrEqual(rect.yMax, 1080f, name + " top");
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Battle_Renders_3D_Damage_And_Rested_Cards()
|
||||
{
|
||||
|
|
|
|||
|
|
@ -944,3 +944,21 @@ Battle; Boot и общие сервисы остаются персистент
|
|||
- Дальше: по желанию вынести overlay-экраны и меню в prefab-ассеты; проверить
|
||||
итоговые позиции на реальном разрешении и, при необходимости, подкрутить
|
||||
`AnimationConfig`/`PlaymatLayoutConfig`.
|
||||
|
||||
## 2026-10-23 — Overlay prefabs и проверка раскладки
|
||||
|
||||
- `CardListView`, `CardDetailOverlay`, `CardActionMenuView` и
|
||||
`ZoneBlockStripView` теперь умеют брать статическую иерархию из
|
||||
`Resources/Overlays/*.prefab`; при отсутствии prefab-а сохраняется
|
||||
прежняя кодовая сборка. Динамические плитки/пункты/подписи по-прежнему
|
||||
создаются кодом.
|
||||
- `OverlayPrefabBuilder` (`Vanguard → Rebuild Overlay Prefabs`) собирает
|
||||
prefab-ассеты из тех же view-классов; `SceneBuilder.BuildAll` вызывает его
|
||||
автоматически. Runtime-загрузка — `OverlayPrefabs`.
|
||||
- Добавлен `Battle_Layout_Fits_Reference_Resolution`: проверяет блоки зон,
|
||||
панель фаз и боевую плашку на 1920×1080 и отсутствие пересечений; при
|
||||
другом разрешении CanvasScaler масштабирует reference-раскладку.
|
||||
- Проверки: клиент EditMode **28/28**, `SCENE_SMOKE success=True`,
|
||||
`PLAYMAT_SMOKE success=True cards=25 hand=5/5 fieldVisible=True`.
|
||||
- Дальше: только 3D-модели/наполнение сцен, анимации retire/ghost и
|
||||
декбилдер; prefab-оверлеи и раскладка закрыты.
|
||||
|
|
|
|||
|
|
@ -162,13 +162,13 @@ curl http://127.0.0.1:18080/health
|
|||
-executeMethod Vanguard.Editor.SceneSmoke.RunPlaymat
|
||||
```
|
||||
|
||||
Клиентские проверки: **26/26** EditMode (сборка всех экранов, импорт арта,
|
||||
Клиентские проверки: **28/28** EditMode (сборка всех экранов, импорт арта,
|
||||
перевод статических/динамических строк, live-переключение языка, рендер
|
||||
3D-доски с уроном и отдыхающей картой, геометрия поля, правила
|
||||
перемещения, рука в поле зрения камеры, обмен колоды/дропа, триггер-зона,
|
||||
CardListView/Detail, зоны и рука противника, InputLock, контекстное меню,
|
||||
стрелка атаки), `SCENE_SMOKE success=True`,
|
||||
`PLAYMAT_SMOKE success=True cards=25 hand=5/5 fieldVisible=True`.
|
||||
стрелка атаки, prefab-оверлеи, раскладка на 1920×1080), `SCENE_SMOKE
|
||||
success=True`, `PLAYMAT_SMOKE success=True cards=25 hand=5/5 fieldVisible=True`.
|
||||
|
||||
`SceneSmoke` заменяет PlayMode-тест загрузки сцен: Single-загрузка сцены
|
||||
ломает стандартный PlayMode test runner. `SceneBuilder` пересобирает сцены:
|
||||
|
|
@ -201,6 +201,9 @@ client/Assets/Vanguard/Runtime/UI/Overlays/
|
|||
CardListModels.cs зоны и скрытые карты
|
||||
ZoneBlockStripView.cs кликабельные блоки зон
|
||||
CardActionMenuView.cs контекстное меню карты
|
||||
OverlayPrefabs.cs загрузка prefab-оверлеев
|
||||
client/Assets/Vanguard/Editor/
|
||||
OverlayPrefabBuilder.cs сборка Resources/Overlays/*.prefab
|
||||
client/Assets/Vanguard/Runtime/Battle/
|
||||
AnimationConfig.cs длительности/скорости анимаций
|
||||
InputLockService.cs блокировка ввода по причинам
|
||||
|
|
@ -215,6 +218,7 @@ client/Assets/Vanguard/Runtime/Board3D/
|
|||
View/AttackArrowView.cs стрелка атаки с наконечником
|
||||
PlaymatSandbox.cs демо без сервера
|
||||
client/Assets/Vanguard/Resources/AnimationConfig.asset настройки анимаций
|
||||
client/Assets/Vanguard/Resources/Overlays/*.prefab prefab-оверлеи
|
||||
client/Assets/Vanguard/Resources/CardArt/vanguard_back.png рубашка VF
|
||||
client/Assets/Vanguard/Scenes/GameBoard3D.unity песочница поля
|
||||
client/Assets/Vanguard/Runtime/Api/ApiClient.cs + ApiContracts.cs
|
||||
|
|
@ -238,12 +242,12 @@ client/Assets/Plugins/Vanguard.Shared + MessagePack
|
|||
|
||||
## Следующие шаги
|
||||
|
||||
1. UX-план 3D-поля: Phase 2–4 закрыты (InputLock/AnimationConfig, контекстное
|
||||
меню, Power/Shield, стрелка, Guardian/Trigger, debug-подписи). Осталось:
|
||||
при необходимости вынести overlay-экраны в prefab-ассеты и отполировать
|
||||
расположение на реальном разрешении.
|
||||
1. UX-план 3D-поля: Phase 2–4 закрыты, overlay-экраны вынесены в prefab
|
||||
(`Resources/Overlays`), раскладка проверена на 1920×1080 и масштабируется
|
||||
CanvasScaler'ом. Осталось при желании отполировать позиции на конкретном
|
||||
мониторе.
|
||||
2. Декбилдер: drag&drop, счётчики лимитов, live-валидация, пресеты.
|
||||
3. 3D-наполнение: модели карт/стола, prefab-экраны, анимации retire/ghost.
|
||||
3. 3D-наполнение: модели карт/стола, prefab-экраны сцен, анимации retire/ghost.
|
||||
4. Звук и настройки, DOTween.
|
||||
5. Лаунчер WPF.
|
||||
|
||||
|
|
|
|||
|
|
@ -36,11 +36,12 @@
|
|||
|
||||
Сцены `Login`, `Lobby`, `DeckBuilder`, `Battle` созданы;
|
||||
`VanguardApp` и общие сервисы персистентны, `SceneFlow` загружает сцены.
|
||||
Сейчас 3D-окружение собрано из примитивов, UI — code-generated uGUI.
|
||||
Боевое поле уже 3D: `GameBoard3D` строит стол, круги, руку и стопки,
|
||||
поддерживает drag&drop, Rest/фейс-даун и ограниченную камеру. Песочница —
|
||||
`Assets/Vanguard/Scenes/GameBoard3D.unity`.
|
||||
Дальше: 3D-модели карт/стола, prefab-экраны, анимации и наполнение сцен.
|
||||
Сейчас 3D-окружение собрано из примитивов, UI — uGUI; статические части
|
||||
боевых overlay-экранов вынесены в `Resources/Overlays/*.prefab`, остальные
|
||||
панели пока code-generated. Боевое поле уже 3D: `GameBoard3D` строит стол,
|
||||
круги, руку и стопки, поддерживает drag&drop, Rest/фейс-даун и ограниченную
|
||||
камеру. Песочница — `Assets/Vanguard/Scenes/GameBoard3D.unity`.
|
||||
Дальше: 3D-модели карт/стола, prefab-экраны сцен, анимации и наполнение сцен.
|
||||
|
||||
Уже перенесено:
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue