캐릭터 레벨에 맞게끔 컨트롤러 내 스킬 세팅 되도록 수정

This commit is contained in:
aube.lee
2025-02-08 01:10:12 +09:00
parent 14a53032e0
commit 2c7f326873
6 changed files with 110 additions and 47 deletions

View File

@@ -1,7 +1,7 @@
[ [
{ {
"id": "K0001", "id": "K0001",
"name": "fireball", "name": "FireBall",
"mpConsumption": 10, "mpConsumption": 10,
"damage": 1.2, "damage": 1.2,
"coolDown": 5, "coolDown": 5,
@@ -10,20 +10,65 @@
}, },
{ {
"id": "K0002", "id": "K0002",
"name": "iceball", "name": "IceBall",
"mpConsumption": 15, "mpConsumption": 12,
"damage": 1.45, "damage": 1.3,
"coolDown": 15, "coolDown": 6,
"slotNumber": 2, "slotNumber": 2,
"requiredLevel": 6 "requiredLevel": 3
}, },
{ {
"id": "K0003", "id": "K0003",
"name": "darknessball", "name": "Leaf Shuriken",
"mpConsumption": 15, "mpConsumption": 7,
"damage": 1.7, "damage": 1.15,
"coolDown": 10, "coolDown": 3,
"slotNumber": 3, "slotNumber": 3,
"requiredLevel": 5
},
{
"id": "K0004",
"name": "Earth Smash",
"mpConsumption": 20,
"damage": 1.8,
"coolDown": 15,
"slotNumber": 0,
"requiredLevel": 7
},
{
"id": "K0005",
"name": "Bubble POP",
"mpConsumption": 5,
"damage": 1.15,
"coolDown": 2,
"slotNumber": 0,
"requiredLevel": 9
},
{
"id": "K0006",
"name": "Leaf Cutter",
"mpConsumption": 14,
"damage": 1.4,
"coolDown": 5,
"slotNumber": 0,
"requiredLevel": 11 "requiredLevel": 11
},
{
"id": "K0007",
"name": "DarknessBall",
"mpConsumption": 30,
"damage": 2.4,
"coolDown": 12,
"slotNumber": 0,
"requiredLevel": 13
},
{
"id": "K0008",
"name": "Elemental burst",
"mpConsumption": 60,
"damage": 8,
"coolDown": 40,
"slotNumber": 0,
"requiredLevel": 15
} }
] ]

View File

@@ -1,5 +1,5 @@
fileFormatVersion: 2 fileFormatVersion: 2
guid: 7f440ab5670a24b44914393fc49d44dd guid: 920b9bd3800ac08409e79255edb991e3
TextScriptImporter: TextScriptImporter:
externalObjects: {} externalObjects: {}
userData: userData:

View File

@@ -92,7 +92,7 @@ GameObject:
m_Icon: {fileID: 0} m_Icon: {fileID: 0}
m_NavMeshLayer: 0 m_NavMeshLayer: 0
m_StaticEditorFlags: 0 m_StaticEditorFlags: 0
m_IsActive: 1 m_IsActive: 0
--- !u!224 &6576729596631844278 --- !u!224 &6576729596631844278
RectTransform: RectTransform:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@@ -319,13 +319,13 @@ MonoBehaviour:
m_OnClick: m_OnClick:
m_PersistentCalls: m_PersistentCalls:
m_Calls: m_Calls:
- m_Target: {fileID: 5127688379423261843} - m_Target: {fileID: -4577297331876422106, guid: dfba43d4c3ff3d4439db025ccd05e6eb, type: 3}
m_TargetAssemblyTypeName: TON.ControllerUI_SkillButton, Assembly-CSharp m_TargetAssemblyTypeName: TON.ControllerUI, Assembly-CSharp
m_MethodName: OnClickSkillButton m_MethodName: OnClickSkillButton
m_Mode: 1 m_Mode: 2
m_Arguments: m_Arguments:
m_ObjectArgument: {fileID: 0} m_ObjectArgument: {fileID: 5127688379423261843}
m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine m_ObjectArgumentAssemblyTypeName: TON.ControllerUI_SkillButton, Assembly-CSharp
m_IntArgument: 0 m_IntArgument: 0
m_FloatArgument: 0 m_FloatArgument: 0
m_StringArgument: m_StringArgument:
@@ -351,7 +351,27 @@ MonoBehaviour:
coolDown: 0 coolDown: 0
slotNumber: 0 slotNumber: 0
requiredLevel: 0 requiredLevel: 0
lockImage: {fileID: 0} skillImage: {fileID: 4450630482936255251}
lockImage: {fileID: 9104780789004064627}
skillSprite:
keys:
- K0001
- K0002
- K0003
- K0004
- K0005
- K0006
- K0007
- K0008
values:
- Value: {fileID: 21300000, guid: 0c6802c457ef3a049babd141698d0763, type: 3}
- Value: {fileID: 21300000, guid: dbd065e74e8e2f840a037a91d8ac8b08, type: 3}
- Value: {fileID: 0}
- Value: {fileID: 0}
- Value: {fileID: 0}
- Value: {fileID: 0}
- Value: {fileID: 21300000, guid: 373fbf69075cebf46992176be6e81b0e, type: 3}
- Value: {fileID: 0}
--- !u!1 &9104780789004064627 --- !u!1 &9104780789004064627
GameObject: GameObject:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@@ -387,7 +407,7 @@ RectTransform:
m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5} m_AnchorMax: {x: 0.5, y: 0.5}
m_AnchoredPosition: {x: 0, y: 0} m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 80, y: 80} m_SizeDelta: {x: 60, y: 60}
m_Pivot: {x: 0.5, y: 0.5} m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &3911793054694365059 --- !u!222 &3911793054694365059
CanvasRenderer: CanvasRenderer:

View File

@@ -682,10 +682,6 @@ PrefabInstance:
serializedVersion: 3 serializedVersion: 3
m_TransformParent: {fileID: 2009939342780089657} m_TransformParent: {fileID: 2009939342780089657}
m_Modifications: m_Modifications:
- target: {fileID: 513183606973775710, guid: f023329ca96ab444ca7c60781e310d59, type: 3}
propertyPath: m_Sprite
value:
objectReference: {fileID: 21300000, guid: 373fbf69075cebf46992176be6e81b0e, type: 3}
- target: {fileID: 3622686016877026920, guid: f023329ca96ab444ca7c60781e310d59, type: 3} - target: {fileID: 3622686016877026920, guid: f023329ca96ab444ca7c60781e310d59, type: 3}
propertyPath: m_Pivot.x propertyPath: m_Pivot.x
value: 1 value: 1
@@ -774,6 +770,10 @@ PrefabInstance:
propertyPath: m_Name propertyPath: m_Name
value: Skill Button value: Skill Button
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: 8637807277690663409, guid: f023329ca96ab444ca7c60781e310d59, type: 3}
propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Target
value:
objectReference: {fileID: -4577297331876422106}
m_RemovedComponents: [] m_RemovedComponents: []
m_RemovedGameObjects: [] m_RemovedGameObjects: []
m_AddedGameObjects: [] m_AddedGameObjects: []
@@ -1061,6 +1061,10 @@ PrefabInstance:
propertyPath: m_Name propertyPath: m_Name
value: Skill Button value: Skill Button
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: 8637807277690663409, guid: f023329ca96ab444ca7c60781e310d59, type: 3}
propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Target
value:
objectReference: {fileID: -4577297331876422106}
m_RemovedComponents: [] m_RemovedComponents: []
m_RemovedGameObjects: [] m_RemovedGameObjects: []
m_AddedGameObjects: [] m_AddedGameObjects: []
@@ -1101,10 +1105,6 @@ PrefabInstance:
serializedVersion: 3 serializedVersion: 3
m_TransformParent: {fileID: 2009939342780089657} m_TransformParent: {fileID: 2009939342780089657}
m_Modifications: m_Modifications:
- target: {fileID: 513183606973775710, guid: f023329ca96ab444ca7c60781e310d59, type: 3}
propertyPath: m_Sprite
value:
objectReference: {fileID: 21300000, guid: dbd065e74e8e2f840a037a91d8ac8b08, type: 3}
- target: {fileID: 3622686016877026920, guid: f023329ca96ab444ca7c60781e310d59, type: 3} - target: {fileID: 3622686016877026920, guid: f023329ca96ab444ca7c60781e310d59, type: 3}
propertyPath: m_Pivot.x propertyPath: m_Pivot.x
value: 1 value: 1
@@ -1189,6 +1189,10 @@ PrefabInstance:
propertyPath: m_Name propertyPath: m_Name
value: Skill Button value: Skill Button
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: 8637807277690663409, guid: f023329ca96ab444ca7c60781e310d59, type: 3}
propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Target
value:
objectReference: {fileID: -4577297331876422106}
m_RemovedComponents: [] m_RemovedComponents: []
m_RemovedGameObjects: [] m_RemovedGameObjects: []
m_AddedGameObjects: [] m_AddedGameObjects: []

View File

@@ -29,7 +29,6 @@ namespace TON
if (skillDatas != null) if (skillDatas != null)
{ {
Debug.Log("characterLevel ::: " + characterLevel);
// 사용 가능한 스킬 필터링 (캐릭터 레벨보다 필요 레벨이 낮거나 같은 것만) // 사용 가능한 스킬 필터링 (캐릭터 레벨보다 필요 레벨이 낮거나 같은 것만)
List<SkillData> availableSkills = skillDatas List<SkillData> availableSkills = skillDatas
.Where(skill => skill.requiredLevel <= characterLevel) .Where(skill => skill.requiredLevel <= characterLevel)
@@ -37,26 +36,18 @@ namespace TON
.Take(3) // 최대 3개 선택 .Take(3) // 최대 3개 선택
.ToList(); .ToList();
Debug.Log(availableSkills.Count);
// availableSkills
// 버튼 설정 // 버튼 설정
for (int i = 0; i < buttons.Length; i++) for (int i = 0; i < buttons.Length; i++)
{ {
if (i < availableSkills.Count) if (i < availableSkills.Count)
{ {
buttons[i].interactable = true; // 사용 가능 buttons[i].interactable = true; // 사용 가능
SkillData skillData = skillDatas.Find(skill => skill.slotNumber == i + 1);
SkillData skillData = skillDatas.Find(skill => skill.slotNumber == i);
skillButtons[i].linkedCharactor = linkedCharactor;
skillButtons[i].Initalize(skillData); skillButtons[i].Initalize(skillData);
} }
else else
{ {
buttons[i].interactable = false; // 사용 불가 buttons[i].interactable = false; // 사용 불가
} }
} }
} }
@@ -78,9 +69,10 @@ namespace TON
linkedCharactor.Attack(); linkedCharactor.Attack();
} }
public void OnClickSkillButton(string skill) public void OnClickSkillButton(ControllerUI_SkillButton skill)
{ {
linkedCharactor.SkillAttack(skill);
linkedCharactor.SkillAttack(skill.skillData.name);
} }
} }
} }

View File

@@ -7,23 +7,25 @@ namespace TON
{ {
public class ControllerUI_SkillButton : MonoBehaviour public class ControllerUI_SkillButton : MonoBehaviour
{ {
public CharacterBase linkedCharactor { get; set; }
public SkillData skillData; public SkillData skillData;
public GameObject skillImage;
public GameObject lockImage;
public Image lockImage; [SerializeField]
private SerializableDictionary<string, Sprite> skillSprite = new SerializableDictionary<string, Sprite>();
public void Initalize(SkillData skillData) public void Initalize(SkillData skillData)
{ {
Debug.Log($"Initalize :: {skillData.id}");
this.skillData = skillData; this.skillData = skillData;
// this.linkedCharactor = linkedCharactor; // 씬에서 캐릭터 찾기 skillImage.SetActive(true);
Debug.Log(linkedCharactor.name); skillImage.GetComponent<Image>().sprite = skillSprite.GetValueOrDefault(skillData.id, null);
lockImage.SetActive(false);
} }
public void OnClickSkillButton()
{
linkedCharactor.SkillAttack(skillData.id);
}
} }