养成基本完毕,新UI,修bug,装备初步,

This commit is contained in:
FloatGaming
2026-03-23 22:37:14 +08:00
parent 49e45ac464
commit dd205b6cb4
2349 changed files with 261722 additions and 283 deletions
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 1f118cd635677744ea0599646cba610a
@@ -0,0 +1,78 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 4704a7ca559b73e42a9961032da75cff, type: 3}
m_Name: idol_upgrade_config
m_EditorClassIdentifier:
tierRules:
- currentTier: 0
nextTier: 1
canTrain: 1
canBreakthrough: 1
requiredCoins: 500
linkedExpBottles:
- {fileID: 11400000, guid: eb4d2548c14f4524ea8870a94df3670d, type: 2}
- {fileID: 11400000, guid: 919fb1664ac3f574b996f590376ca9c8, type: 2}
- {fileID: 11400000, guid: 2f4b8d2a81e5d1149b5cbc1a039ba2e9, type: 2}
- {fileID: 11400000, guid: 82842b6a4ecff4249b89ed09c6126261, type: 2}
- {fileID: 11400000, guid: fb06d42cec33d7c43b676dfd6b63c25f, type: 2}
- {fileID: 11400000, guid: 0351a79f43bc81b40ab0f6bb40ab54ac, type: 2}
breakthroughCosts:
- material: {fileID: 11400000, guid: fd00a479212129440abb61a7bd91e810, type: 2}
amount: 1
breakthroughBottleCosts: []
- currentTier: 1
nextTier: 2
canTrain: 1
canBreakthrough: 1
requiredCoins: 1500
linkedExpBottles:
- {fileID: 11400000, guid: fbb06936c02c44b45ad632dcfdc74de5, type: 2}
- {fileID: 11400000, guid: 919fb1664ac3f574b996f590376ca9c8, type: 2}
- {fileID: 11400000, guid: 2f4b8d2a81e5d1149b5cbc1a039ba2e9, type: 2}
- {fileID: 11400000, guid: 82842b6a4ecff4249b89ed09c6126261, type: 2}
- {fileID: 11400000, guid: fb06d42cec33d7c43b676dfd6b63c25f, type: 2}
- {fileID: 11400000, guid: 0351a79f43bc81b40ab0f6bb40ab54ac, type: 2}
breakthroughCosts:
- material: {fileID: 11400000, guid: f11975bf44f7fd649ad384b7a2662c09, type: 2}
amount: 1
breakthroughBottleCosts: []
- currentTier: 2
nextTier: 3
canTrain: 1
canBreakthrough: 1
requiredCoins: 5000
linkedExpBottles:
- {fileID: 11400000, guid: b3d72c276f1ba5f4e99a9d1e0cd3b6a1, type: 2}
- {fileID: 11400000, guid: 919fb1664ac3f574b996f590376ca9c8, type: 2}
- {fileID: 11400000, guid: 2f4b8d2a81e5d1149b5cbc1a039ba2e9, type: 2}
- {fileID: 11400000, guid: 82842b6a4ecff4249b89ed09c6126261, type: 2}
- {fileID: 11400000, guid: fb06d42cec33d7c43b676dfd6b63c25f, type: 2}
- {fileID: 11400000, guid: 0351a79f43bc81b40ab0f6bb40ab54ac, type: 2}
breakthroughCosts:
- material: {fileID: 11400000, guid: 875083f310e2a1e4189c987e09b3418e, type: 2}
amount: 1
breakthroughBottleCosts:
- bottle: {fileID: 11400000, guid: 184df96a865b024438c22d01eb1c129e, type: 2}
amount: 1
specialBottleRules:
- bottle: {fileID: 11400000, guid: 919fb1664ac3f574b996f590376ca9c8, type: 2}
effect: 0
allowAnyCurrentTier: 1
minimumCurrentTier: 0
maximumCurrentTier: 3
targetTier: 2
- bottle: {fileID: 11400000, guid: 2f4b8d2a81e5d1149b5cbc1a039ba2e9, type: 2}
effect: 1
allowAnyCurrentTier: 1
minimumCurrentTier: 0
maximumCurrentTier: 3
targetTier: 2
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: af80826011e24734b8ec12716070a969
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,74 @@
using System;
using TMPro;
using UnityEngine;
using UnityEngine.UI;
public class materialPrefab : MonoBehaviour
{
[Header("imgs")]
public Image boarder;
public Image materialImg;
public Button materialButton;
public TextMeshProUGUI materialAmount;
public Text materialName;
private Action clickAction;
private void Awake()
{
if (materialButton != null)
{
materialButton.onClick.RemoveListener(HandleClick);
materialButton.onClick.AddListener(HandleClick);
}
}
public void Bind(Sprite sprite, string displayName, string amountText, bool selected, bool interactable, Action onClick)
{
clickAction = onClick;
if (materialImg != null)
{
materialImg.sprite = sprite;
materialImg.enabled = sprite != null;
}
if (materialName != null)
{
materialName.text = displayName ?? string.Empty;
}
if (materialAmount != null)
{
materialAmount.text = amountText ?? string.Empty;
}
SetSelected(selected);
if (materialButton != null)
{
materialButton.interactable = interactable;
}
}
public void SetSelected(bool selected)
{
if (boarder != null)
{
boarder.enabled = selected;
}
}
private void HandleClick()
{
if (materialButton != null && !materialButton.interactable)
{
return;
}
if (clickAction != null)
{
clickAction.Invoke();
}
}
}
@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: e606e8cded316504e9b271ca8bd9ae5e
@@ -0,0 +1,599 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &419699377358998328
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 2451014950221970868}
- component: {fileID: 7708545175036600530}
- component: {fileID: 84615446005226368}
m_Layer: 5
m_Name: name
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &2451014950221970868
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 419699377358998328}
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: 283905034138895707}
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: -49.994003}
m_SizeDelta: {x: 0, y: -59.836}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &7708545175036600530
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 419699377358998328}
m_CullTransparentMesh: 1
--- !u!114 &84615446005226368
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 419699377358998328}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, 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_FontData:
m_Font: {fileID: 12800000, guid: bd4be44636ad6c24a9b117a7108a75e9, type: 3}
m_FontSize: 12
m_FontStyle: 0
m_BestFit: 1
m_MinSize: 1
m_MaxSize: 16
m_Alignment: 4
m_AlignByGeometry: 0
m_RichText: 1
m_HorizontalOverflow: 0
m_VerticalOverflow: 0
m_LineSpacing: 1
m_Text: "\u51E1\u54C1\u5076\u50CF\u7075\u6DB2"
--- !u!1 &3731674714244970483
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 283905034138895707}
- component: {fileID: 3093584924614703832}
- component: {fileID: 3805267738081983623}
- component: {fileID: 7307418862074045362}
- component: {fileID: 6223024646424990969}
m_Layer: 5
m_Name: materialPrefab
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &283905034138895707
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3731674714244970483}
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: 3389820464077428868}
- {fileID: 664757063189452699}
- {fileID: 2451014950221970868}
m_Father: {fileID: 0}
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: 80, y: 80}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &3093584924614703832
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3731674714244970483}
m_CullTransparentMesh: 1
--- !u!114 &3805267738081983623
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3731674714244970483}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: e606e8cded316504e9b271ca8bd9ae5e, type: 3}
m_Name:
m_EditorClassIdentifier:
boarder: {fileID: 4301219412316587214}
materialImg: {fileID: 6433794917799223522}
materialButton: {fileID: 6223024646424990969}
materialAmount: {fileID: 1761526427795409056}
materialName: {fileID: 84615446005226368}
--- !u!114 &7307418862074045362
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3731674714244970483}
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: 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: 10905, 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!114 &6223024646424990969
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3731674714244970483}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3}
m_Name:
m_EditorClassIdentifier:
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: 7307418862074045362}
m_OnClick:
m_PersistentCalls:
m_Calls: []
--- !u!1 &4433694961789462748
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 2627397760832851542}
- component: {fileID: 5381482938171584313}
- component: {fileID: 6433794917799223522}
m_Layer: 5
m_Name: image
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &2627397760832851542
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4433694961789462748}
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: 7963245769671633172}
m_Father: {fileID: 664757063189452699}
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: 65, y: 65}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &5381482938171584313
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4433694961789462748}
m_CullTransparentMesh: 1
--- !u!114 &6433794917799223522
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4433694961789462748}
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: 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!1 &5384464930988271749
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 3389820464077428868}
- component: {fileID: 334864567550305053}
- component: {fileID: 4301219412316587214}
m_Layer: 5
m_Name: boardBtm
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &3389820464077428868
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5384464930988271749}
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: 283905034138895707}
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: 80, y: 80}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &334864567550305053
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5384464930988271749}
m_CullTransparentMesh: 1
--- !u!114 &4301219412316587214
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5384464930988271749}
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: 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: 9ebd9ce7600225b48a92c3900b8188fc, type: 3}
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: 2
--- !u!1 &7332347141654536774
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 7963245769671633172}
- component: {fileID: 5194410978099864405}
- component: {fileID: 1761526427795409056}
m_Layer: 5
m_Name: amount
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &7963245769671633172
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7332347141654536774}
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: 2627397760832851542}
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.343, y: -23.838}
m_SizeDelta: {x: 62.577, y: 22.217}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &5194410978099864405
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7332347141654536774}
m_CullTransparentMesh: 1
--- !u!114 &1761526427795409056
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7332347141654536774}
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: Amount
m_isRightToLeft: 0
m_fontAsset: {fileID: 11400000, guid: 452fa97492cae71479cf143f29930751, type: 2}
m_sharedMaterial: {fileID: -346136068272202111, guid: 452fa97492cae71479cf143f29930751, type: 2}
m_fontSharedMaterials: []
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: 15.35
m_fontSizeBase: 12
m_fontWeight: 400
m_enableAutoSizing: 1
m_fontSizeMin: 6
m_fontSizeMax: 18
m_fontStyle: 0
m_HorizontalAlignment: 4
m_VerticalAlignment: 1024
m_textAlignment: 65535
m_characterSpacing: 0
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 &7873708369997542709
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 664757063189452699}
- component: {fileID: 2348238435232585680}
- component: {fileID: 1657374318142278237}
- component: {fileID: 5784989643262439200}
m_Layer: 5
m_Name: btm
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &664757063189452699
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7873708369997542709}
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: 2627397760832851542}
m_Father: {fileID: 283905034138895707}
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: 80, y: 80}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &2348238435232585680
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7873708369997542709}
m_CullTransparentMesh: 1
--- !u!114 &1657374318142278237
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7873708369997542709}
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: 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: 7f3b1220317607e44bbb8f0e1998044a, type: 3}
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: 2
--- !u!114 &5784989643262439200
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7873708369997542709}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 31a19414c41e5ae4aae2af33fee712f6, type: 3}
m_Name:
m_EditorClassIdentifier:
m_ShowMaskGraphic: 1
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 872db18b63ee25a4d990951b3b14c76a
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
+253
View File
@@ -0,0 +1,253 @@
using System;
using System.Collections.Generic;
using UnityEngine;
[CreateAssetMenu(fileName = "idol_upgrade_config", menuName = "Idols/Upgrade Config")]
public class upgradeConfig : ScriptableObject
{
[Serializable]
public sealed class GrowthMaterialCost
{
public growthMaterialSO material;
[Min(0)] public int amount = 0;
}
[Serializable]
public sealed class BreakthroughBottleCost
{
public expBottlesSO bottle;
[Min(0)] public int amount = 0;
}
[Serializable]
public sealed class TierRule
{
public HeroGrowthTier currentTier = HeroGrowthTier.C;
public HeroGrowthTier nextTier = HeroGrowthTier.B;
public bool canTrain = true;
public bool canBreakthrough = true;
[Min(0)] public int requiredCoins = 0;
public List<expBottlesSO> linkedExpBottles = new List<expBottlesSO>();
public List<GrowthMaterialCost> breakthroughCosts = new List<GrowthMaterialCost>();
public List<BreakthroughBottleCost> breakthroughBottleCosts = new List<BreakthroughBottleCost>();
}
public enum SpecialBottleEffect
{
FillToNextTierCap,
ReachTargetTierMaxWithoutSkippedBreakthroughPayment
}
[Serializable]
public sealed class SpecialBottleRule
{
public expBottlesSO bottle;
public SpecialBottleEffect effect = SpecialBottleEffect.FillToNextTierCap;
public bool allowAnyCurrentTier = true;
public HeroGrowthTier minimumCurrentTier = HeroGrowthTier.C;
public HeroGrowthTier maximumCurrentTier = HeroGrowthTier.S;
public HeroGrowthTier targetTier = HeroGrowthTier.A;
}
[Header("Tier Rules")]
public List<TierRule> tierRules = new List<TierRule>();
[Header("Special Bottles")]
public List<SpecialBottleRule> specialBottleRules = new List<SpecialBottleRule>();
public TierRule GetRule(HeroGrowthTier tier)
{
if (tierRules == null)
{
return null;
}
for (int i = 0; i < tierRules.Count; i++)
{
TierRule rule = tierRules[i];
if (rule != null && rule.currentTier == tier)
{
return rule;
}
}
return null;
}
public List<expBottlesSO> GetLinkedBottles(HeroGrowthTier tier)
{
TierRule rule = GetRule(tier);
return rule != null ? rule.linkedExpBottles : null;
}
public List<GrowthMaterialCost> GetBreakthroughCosts(HeroGrowthTier tier)
{
TierRule rule = GetRule(tier);
return rule != null ? rule.breakthroughCosts : null;
}
public SpecialBottleRule GetSpecialBottleRule(expBottlesSO bottle)
{
if (bottle == null || specialBottleRules == null)
{
return null;
}
for (int i = 0; i < specialBottleRules.Count; i++)
{
SpecialBottleRule rule = specialBottleRules[i];
if (rule != null && rule.bottle == bottle)
{
return rule;
}
}
return null;
}
private void OnValidate()
{
EnsureDefaultRules();
NormalizeRules();
}
private void EnsureDefaultRules()
{
EnsureRuleExists(HeroGrowthTier.C, HeroGrowthTier.B, true, true);
EnsureRuleExists(HeroGrowthTier.B, HeroGrowthTier.A, true, true);
EnsureRuleExists(HeroGrowthTier.A, HeroGrowthTier.S, true, true);
}
private void EnsureRuleExists(HeroGrowthTier currentTier, HeroGrowthTier nextTier, bool canTrain, bool canBreakthrough)
{
if (GetRule(currentTier) != null)
{
return;
}
if (tierRules == null)
{
tierRules = new List<TierRule>();
}
tierRules.Add(new TierRule
{
currentTier = currentTier,
nextTier = nextTier,
canTrain = canTrain,
canBreakthrough = canBreakthrough
});
}
private void NormalizeRules()
{
if (tierRules == null)
{
tierRules = new List<TierRule>();
return;
}
if (specialBottleRules == null)
{
specialBottleRules = new List<SpecialBottleRule>();
}
HashSet<HeroGrowthTier> seen = new HashSet<HeroGrowthTier>();
for (int i = tierRules.Count - 1; i >= 0; i--)
{
TierRule rule = tierRules[i];
if (rule == null)
{
tierRules.RemoveAt(i);
continue;
}
if (seen.Contains(rule.currentTier))
{
tierRules.RemoveAt(i);
continue;
}
if (rule.currentTier == HeroGrowthTier.S)
{
tierRules.RemoveAt(i);
continue;
}
seen.Add(rule.currentTier);
if (rule.linkedExpBottles == null)
{
rule.linkedExpBottles = new List<expBottlesSO>();
}
if (rule.breakthroughCosts == null)
{
rule.breakthroughCosts = new List<GrowthMaterialCost>();
}
if (rule.breakthroughBottleCosts == null)
{
rule.breakthroughBottleCosts = new List<BreakthroughBottleCost>();
}
if ((int)rule.nextTier <= (int)rule.currentTier)
{
rule.nextTier = (HeroGrowthTier)Mathf.Clamp((int)rule.currentTier + 1, 0, (int)HeroGrowthTier.S);
}
for (int costIndex = rule.breakthroughCosts.Count - 1; costIndex >= 0; costIndex--)
{
GrowthMaterialCost cost = rule.breakthroughCosts[costIndex];
if (cost == null)
{
rule.breakthroughCosts.RemoveAt(costIndex);
continue;
}
cost.amount = Mathf.Max(0, cost.amount);
}
for (int bottleCostIndex = rule.breakthroughBottleCosts.Count - 1; bottleCostIndex >= 0; bottleCostIndex--)
{
BreakthroughBottleCost bottleCost = rule.breakthroughBottleCosts[bottleCostIndex];
if (bottleCost == null)
{
rule.breakthroughBottleCosts.RemoveAt(bottleCostIndex);
continue;
}
bottleCost.amount = Mathf.Max(0, bottleCost.amount);
}
}
for (int i = specialBottleRules.Count - 1; i >= 0; i--)
{
SpecialBottleRule rule = specialBottleRules[i];
if (rule == null)
{
specialBottleRules.RemoveAt(i);
continue;
}
if (rule.allowAnyCurrentTier)
{
rule.minimumCurrentTier = HeroGrowthTier.C;
rule.maximumCurrentTier = HeroGrowthTier.S;
}
else if ((int)rule.minimumCurrentTier > (int)rule.maximumCurrentTier)
{
HeroGrowthTier temp = rule.minimumCurrentTier;
rule.minimumCurrentTier = rule.maximumCurrentTier;
rule.maximumCurrentTier = temp;
}
if (rule.effect == SpecialBottleEffect.FillToNextTierCap)
{
rule.targetTier = HeroGrowthTier.A;
}
}
tierRules.Sort((left, right) => left.currentTier.CompareTo(right.currentTier));
}
}
@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 4704a7ca559b73e42a9961032da75cff