Добавил цену туррели на кнопку

This commit is contained in:
2026-06-05 01:51:16 +03:00
parent 5252b29f49
commit 64bfb6267f
7 changed files with 367 additions and 34 deletions
+309 -3
View File
@@ -1,5 +1,82 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &2923076406123619186
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 6703994042700269976}
- component: {fileID: 3284988505681211415}
- component: {fileID: 4303360228368016757}
m_Layer: 0
m_Name: PricePanel
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &6703994042700269976
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2923076406123619186}
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: 815499889582166291}
- {fileID: 4827303025434984465}
m_Father: {fileID: 4616868106249531007}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0}
m_AnchorMax: {x: 0.5, y: 0}
m_AnchoredPosition: {x: 0, y: 26.838}
m_SizeDelta: {x: 49.3259, y: 15.086502}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &3284988505681211415
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2923076406123619186}
m_CullTransparentMesh: 1
--- !u!114 &4303360228368016757
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2923076406123619186}
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.84705883}
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: 10907, guid: 0000000000000000f000000000000000, type: 0}
m_Type: 1
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 &5374699834306416741
GameObject:
m_ObjectHideFlags: 0
@@ -12,6 +89,7 @@ GameObject:
- component: {fileID: 3104993817453913618}
- component: {fileID: 6671647633012711255}
- component: {fileID: 3635012363401127766}
- component: {fileID: -1733514171764333722}
m_Layer: 0
m_Name: TurretButton
m_TagString: Untagged
@@ -32,12 +110,13 @@ RectTransform:
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 5955449702013521600}
- {fileID: 6703994042700269976}
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_SizeDelta: {x: 100, y: 100}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &3104993817453913618
CanvasRenderer:
@@ -121,6 +200,233 @@ MonoBehaviour:
m_OnClick:
m_PersistentCalls:
m_Calls: []
--- !u!114 &-1733514171764333722
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5374699834306416741}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: f08ae7c4b7050dc42b23b31679979436, type: 3}
m_Name:
m_EditorClassIdentifier: Assembly-CSharp::TurretButton
_button: {fileID: 3635012363401127766}
_icon: {fileID: 2512048747312714579}
_priceText: {fileID: 7166314185799986044}
--- !u!1 &6391222849013290357
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 4827303025434984465}
- component: {fileID: 5744903312660315167}
- component: {fileID: 3958030948990711529}
m_Layer: 0
m_Name: Coin
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &4827303025434984465
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6391222849013290357}
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: 6703994042700269976}
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: 7.462, y: -0.00000047684}
m_SizeDelta: {x: 11.3154, y: 11.3154}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &5744903312660315167
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6391222849013290357}
m_CullTransparentMesh: 1
--- !u!114 &3958030948990711529
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6391222849013290357}
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: 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_Sprite: {fileID: 21300000, guid: dd4f6cfdf80256a46ad9ef574dad72c6, type: 3}
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 &6852050531891842294
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 815499889582166291}
- component: {fileID: 6189593844976643000}
- component: {fileID: 7166314185799986044}
m_Layer: 0
m_Name: PriceText
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &815499889582166291
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6852050531891842294}
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: 6703994042700269976}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 1, y: 0.5}
m_AnchorMax: {x: 1, y: 0.5}
m_AnchoredPosition: {x: -18.7, y: 0}
m_SizeDelta: {x: 35.0338, y: 12.1463}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &6189593844976643000
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6852050531891842294}
m_CullTransparentMesh: 1
--- !u!114 &7166314185799986044
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6852050531891842294}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3}
m_Name:
m_EditorClassIdentifier: Unity.TextMeshPro::TMPro.TextMeshProUGUI
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: 00000
m_isRightToLeft: 0
m_fontAsset: {fileID: 11400000, guid: 41d169c64b9147349a84113d65d9e0cd, type: 2}
m_sharedMaterial: {fileID: 6511282304109922210, guid: 41d169c64b9147349a84113d65d9e0cd, type: 2}
m_fontSharedMaterials: []
m_fontMaterial: {fileID: 0}
m_fontMaterials: []
m_fontColor32:
serializedVersion: 2
rgba: 4279159491
m_fontColor: {r: 0.766458, g: 0.7924528, b: 0.056069765, 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: 7.4
m_fontSizeBase: 7.4
m_fontWeight: 400
m_enableAutoSizing: 0
m_fontSizeMin: 18
m_fontSizeMax: 72
m_fontStyle: 0
m_HorizontalAlignment: 2
m_VerticalAlignment: 512
m_textAlignment: 65535
m_characterSpacing: 0
m_characterHorizontalScale: 1
m_wordSpacing: 0
m_lineSpacing: 0
m_lineSpacingMax: 0
m_paragraphSpacing: 0
m_charWidthMaxAdj: 0
m_TextWrappingMode: 1
m_wordWrappingRatios: 0.4
m_overflowMode: 0
m_linkedTextComponent: {fileID: 0}
parentLinkedComponent: {fileID: 0}
m_enableKerning: 0
m_ActiveFontFeatures: 6e72656b
m_enableExtraPadding: 0
checkPaddingRequired: 0
m_isRichText: 1
m_EmojiFallbackSupport: 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 &8443624415891055671
GameObject:
m_ObjectHideFlags: 0
@@ -155,8 +461,8 @@ RectTransform:
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.00001812, y: 0}
m_SizeDelta: {x: 69.6812, y: 77.0561}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 59.9627, y: 61.4113}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &5022439593427316590
CanvasRenderer:
+2 -2
View File
@@ -13812,7 +13812,7 @@ MonoBehaviour:
m_ChildAlignment: 4
m_StartCorner: 0
m_StartAxis: 0
m_CellSize: {x: 90, y: 90}
m_CellSize: {x: 70, y: 90}
m_Spacing: {x: 10, y: 0}
m_Constraint: 2
m_ConstraintCount: 1
@@ -13830,7 +13830,7 @@ MonoBehaviour:
m_EditorClassIdentifier: Assembly-CSharp::TurretsShopViewer
_shop: {fileID: 1311268619}
_wallet: {fileID: 1030979928}
_buttonPrefab: {fileID: 3635012363401127766, guid: f87d5d34136775b41907fc1187ef4bc2, type: 3}
_buttonPrefab: {fileID: -1733514171764333722, guid: f87d5d34136775b41907fc1187ef4bc2, type: 3}
_ignoreBlocks:
- {fileID: 1987853413}
- {fileID: 1569763699}
-13
View File
@@ -1,13 +0,0 @@
using UnityEngine;
public static class ComponentHelper
{
public static T GetComponentInChildrenWithoutParent<T>(this Component obj) where T : Component
{
foreach (var comp in obj.GetComponentsInChildren<T>())
if (comp.gameObject != obj.gameObject)
return comp;
return null;
}
}
-2
View File
@@ -1,2 +0,0 @@
fileFormatVersion: 2
guid: 9575f79ebc216754fb44b8066ae811b2
+45
View File
@@ -0,0 +1,45 @@
using UnityEngine;
using TMPro;
using UnityEngine.UI;
using UnityEngine.Events;
public class TurretButton : MonoBehaviour
{
[SerializeField] private Button _button;
[SerializeField] private Image _icon;
[SerializeField] private TextMeshProUGUI _priceText;
public Sprite Icon
{
get
{
if (_icon.isActiveAndEnabled)
return _icon.sprite;
return null;
}
set
{
bool isActive = value != null;
_icon.gameObject.SetActive(isActive);
if (isActive)
_icon.sprite = value;
}
}
public string PriceText
{
get => _priceText.text;
set => _priceText.text = value;
}
public bool Interactable
{
get => _button.interactable;
set => _button.interactable = value;
}
public TurretShopItem TurretItem { get; set; }
public event UnityAction OnClick
{
add => _button.onClick.AddListener(value);
remove => _button.onClick.RemoveListener(value);
}
}
+2
View File
@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: f08ae7c4b7050dc42b23b31679979436
+9 -14
View File
@@ -7,12 +7,12 @@ public class TurretsShopViewer : MonoBehaviour
{
[SerializeField] private TurretsShop _shop;
[SerializeField] private Wallet _wallet;
[SerializeField] private Button _buttonPrefab;
[SerializeField] private TurretButton _buttonPrefab;
[SerializeField] private List<BlockScript> _ignoreBlocks;
private Animator _animator;
private bool _hidden = true;
private readonly Dictionary<Button, TurretShopItem> _buttons = new();
private readonly List<TurretButton> _buttons = new();
private static readonly int _hideAnimation = Animator.StringToHash("HideTurretShopPanelAnimation");
private static readonly int _showAnimation = Animator.StringToHash("ShowTurretShopPanelAnimation");
@@ -22,15 +22,12 @@ public class TurretsShopViewer : MonoBehaviour
foreach (var item in _shop.TurretShopItems)
{
var button = Instantiate(_buttonPrefab, transform);
var icon = button.GetComponentInChildrenWithoutParent<Image>();
if (icon != null && item.Icon != null)
{
icon.gameObject.SetActive(true);
icon.sprite = item.Icon;
}
button.TurretItem = item;
button.Icon = item.Icon;
button.PriceText = item.Price.ToString();
button.OnClick += () => _shop.BuyTurret(item);
button.onClick.AddListener(() => _shop.BuyTurret(item));
_buttons.Add(button, item);
_buttons.Add(button);
}
}
@@ -77,9 +74,7 @@ public class TurretsShopViewer : MonoBehaviour
private void OnMoneyChanged(int money)
{
foreach (var (button, item) in _buttons)
{
button.interactable = money >= item.Price;
}
foreach (var button in _buttons)
button.Interactable = money >= button.TurretItem.Price;
}
}