DB 구조 짜는 작업을 완료했다.

DB 테이블에 더미데이터를 넣는 작업까지 완료했다.

 

기존 db 구조를 수정하는 작업을 하고있다.

string데이터를 모두 외부 테이블로 빼서 관리하고, 서로 물고물던 테이블을 일부 정리했다.

아직 작업이 진행중이라 내일까지 이어질듯... 생각보다 머리가 아프다

'Unity > 작업&삽질노트' 카테고리의 다른 글

[개발중인 게임] Shambles  (0) 2022.04.13
2021-08-18 작업일지  (0) 2021.08.19
2021-08-12 작업일지  (0) 2021.08.12
2021-08-09 작업일지  (0) 2021.08.09
2021-08-04 작업일지  (0) 2021.08.04

기존 테이블 구조 일부를 외부 테이블로 빼고, 카드 효과를 스크립트로 관리하기로 결정되어 해당 부분을 수정중이다.

그 외에 장비 유지보수 레이어 UI를 작업했다.

'Unity > 작업&삽질노트' 카테고리의 다른 글

2021-08-18 작업일지  (0) 2021.08.19
2021-08-17 작업일지  (0) 2021.08.17
2021-08-09 작업일지  (0) 2021.08.09
2021-08-04 작업일지  (0) 2021.08.04
2021-08-03 작업일지  (0) 2021.08.03

오늘은 기획서의 장비/스킬/카드 데이터를 DB에 등록/정리하는 작업을 했다.

컬럼을 정리하는 과정에서 바뀐 부분들을 몇가지 수정했다.

스킬트리부분은 기능상의 구현은 끝났다. 이후 리소스 교체와 애니메이션 추가, UI 재배치를 해줄 예정이다.

 

'Unity > 작업&삽질노트' 카테고리의 다른 글

2021-08-17 작업일지  (0) 2021.08.17
2021-08-12 작업일지  (0) 2021.08.12
2021-08-04 작업일지  (0) 2021.08.04
2021-08-03 작업일지  (0) 2021.08.03
2021-08-02 작업일지  (0) 2021.08.02

작업 내용

1. 레이어(씬)별 작업 진행상황 문서 작성
2. 기존 코드 수정작업 다수
3. UIBar prefab에 옵저버 적용


 카드를 삭제하거나, 스킬을 활성화 할때 골드와 스킬포인트가 차감되어 UI에 반영된다.

특정 행동이 실행되면 NotifyObserver를 실행해 옵저버에 알리고 해당 옵저버에 엮여있는 OnNext를 모두 실행한다. 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
//...        
        else if (characterData.UnLockedSkill.Contains(selectedSkillData.Parent)) {
            //skillActivationButton.image.sprite = Resources.Load("UnlockSkillButtonImageUIPath...", typeof(Sprite)) as Sprite;
            skillButtonText.text = $"{CommonDefineKR.UnlockSkillString}";
            skillActivationButton.interactable = true;
 
            skillActivationButton.onClick.AddListener(() => {
                characterData.UnLockedSkill.Add(selectedSkillData.Number);
                //...
                characterData.SkillPoint -= 1;
                CharacterInfoDAO.UpdatePlayerInfo(characterData);
                SceneState.GetInstance()._UIStateHandler.NotifyObservers();
                SetButton();
            });
        }
//...
cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
public class UIBarInfoController : MonoBehaviour, IObserver<UIStateInfo> {
    // Area
    [SerializeField] Text playerNameText = null;
    [SerializeField] Text playerLevelText = null;
    [SerializeField] Text playerHpText = null;
    [SerializeField] Text playerMpText = null;
    [SerializeField] Text stageNameText = null;
    [SerializeField] Image playerIconImage = null;
 
    // Skill
    [SerializeField] Text containSkillPointText = null;
 
    // Gold
    [SerializeField] Text coinText = null;
 
    void Start() {
        Init();
        SceneState.GetInstance()._UIStateHandler.Subscribe(this);
        SceneState.GetInstance()._UIStateHandler.NotifyObservers();
    }
 
    private void Init() {
        CharacterInfoDTO characterInfo = CharacterInfoDAO.GetCharacterInfo();
        playerNameText.text = characterInfo.Name;
        playerLevelText.text = $"{CommonDefineKR.LevelString} {characterInfo.Level}";
        playerHpText.text = $"{CommonDefineKR.HpString} {characterInfo.Hp}";
        playerMpText.text = $"{CommonDefineKR.MpString} {characterInfo.Mp}";
 
        AreaDTO area = AreaDAO.SelectArea(characterInfo.CurrentArea);
        if (null != area) {
            stageNameText.text = area.Name;
        }
 
        PortraitDTO portrait = PortraitDAO.SelectPortrait(characterInfo.Portrait);
        playerIconImage.sprite = Resources.Load(portrait.ImagePath, typeof(Sprite)) as Sprite;
 
        containSkillPointText.text = $"{CommonDefineKR.ContainSkillPointString} {characterInfo.SkillPoint}";
 
        coinText.text = characterInfo.Gold.ToString();
    }
    public void OnNext(UIStateInfo value) {
        Init();
    }
    public void OnCompleted() {
        throw new NotImplementedException();
    }
 
    public void OnError(Exception error) {
        throw new NotImplementedException();
    }
}
cs

 

'Unity > 작업&삽질노트' 카테고리의 다른 글

2021-08-12 작업일지  (0) 2021.08.12
2021-08-09 작업일지  (0) 2021.08.09
2021-08-03 작업일지  (0) 2021.08.03
2021-08-02 작업일지  (0) 2021.08.02
[작업일지] 2019-06-13  (0) 2019.06.13

캐릭터의 카드 유지보수씬을 작업중이다.

이전에 작업해놓은 내용들이 읽기 힘들고 지저분해 코드를 정리하는 작업을 했다.

기존에는 카드 리스트를 위아래로 드래그해 살펴볼 수 있는 기능과, 카드를 드래그해 카드 버리기 영역에 드랍하면 카드가 버려지는 기능이 있었는데, 드래그 기능이 중복되어 리스트 드래그가 방해받는 문제가 있었다. 해당 문제는 카드선택 후 버리기 버튼을 눌러 버리는 형태로 변경해 해결했다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.EventSystems;
public class CharacterMaintenance_Card_Layer : MonoBehaviour, IPointerClickHandler {
 
    [SerializeField] GameObject deckListArea = null;
    [SerializeField] Canvas targetCanvas = null;
 
    //버튼
    [SerializeField] Button discardButton = null;
 
    //카드 설명창
    [SerializeField] Text cardTitle = null;
    [SerializeField] Text cardMana = null;
    [SerializeField] Text cardDescribe = null;
    [SerializeField] Text cardProperty = null;
    [SerializeField] GameObject cardManaIcon = null;
    //raycast 변수
    GraphicRaycaster raycaster = null;
    PointerEventData pointer = null;
 
    CardDTO cardDataOnSelect = null;
    GameObject cardObjectOnSelect = null;
    CharacterInfoDTO characterInfo = null;
    GameObject currentPopup = null;
 
    void Start() {
        ButtonInit();
    }
    private void OnEnable() {
        Init();
        UpdateDeckList();
    }
 
    void Init() {
        raycaster = targetCanvas.GetComponent<GraphicRaycaster>();
        pointer = new PointerEventData(null);
        characterInfo = CharacterInfoDAO.GetCharacterInfo();
    }
 
    void ButtonInit() {
        discardButton.onClick.AddListener(() => {
            DiscardCardFromDeck();
        });
    }
 
    public void OnPointerClick(PointerEventData eventData) {
        pointer.position = eventData.position;
 
        List<RaycastResult> results = new List<RaycastResult>();
        raycaster.Raycast(pointer, results);
        if (results.Count > 0) {
            if (results[0].gameObject.transform.GetComponent<CardObject>()) {
                if (cardObjectOnSelect != null) {
                    cardObjectOnSelect.GetComponent<CardObject>().glowEffect.SetActive(false);
                }
 
                cardDataOnSelect = results[0].gameObject.transform.GetComponent<CardObject>().CardData;
                cardObjectOnSelect = results[0].gameObject;
                cardObjectOnSelect.GetComponent<CardObject>().glowEffect.SetActive(true);
                UpdateCardDescription(cardDataOnSelect);
            }
        }
    }
 
    void UpdateDeckList() {
        Transform[] childList = deckListArea.GetComponentsInChildren<Transform>(true);//기존 레이어에 존재하던 자식들 삭제
        if (childList != null) {
            for (int i = 1; i < childList.Length; i++) {
                if (childList[i] != transform) Destroy(childList[i].gameObject);
            }
        }
 
        for (int i = 0; i < characterInfo.CardList.Count; i++) {
            GameObject obj = FactoryManager.GetInstance().CreateCardObject(characterInfo.CardList[i], deckListArea.transform);
            obj.name = $"card_{i}";
        }
    }
 
    void UpdateCardDescription(CardDTO card) {
        cardTitle.text = card.Title;
        cardMana.text = card.Mana.ToString();
        cardDescribe.text = card.Explanation;
        cardProperty.text = card.Property;
        cardManaIcon.SetActive(true);
    }
 
    void DeleteCardDescription() {
        cardTitle.text = "";
        cardMana.text = "";
        cardDescribe.text = "";
        cardProperty.text = "";
        cardManaIcon.SetActive(false);
    }
 
    void DiscardCardFromDeck() {
        if(cardObjectOnSelect != null) {
            characterInfo.CardList.Remove(cardDataOnSelect.Number);
            Destroy(cardObjectOnSelect);
 
            cardDataOnSelect = null;
            cardObjectOnSelect = null;
        }
        DeleteCardDescription();
 
        CharacterInfoDAO.UpdatePlayerInfo(characterInfo);
    }
}
 
 
cs

카드를 삭제할때마다 DB에 바로 업데이트하도록 했다.

몇줄 수정만 해줄 생각이었는데 생각보다 지우고 다시 쓴 부분이 많아졌다.

'Unity > 작업&삽질노트' 카테고리의 다른 글

2021-08-12 작업일지  (0) 2021.08.12
2021-08-09 작업일지  (0) 2021.08.09
2021-08-04 작업일지  (0) 2021.08.04
2021-08-02 작업일지  (0) 2021.08.02
[작업일지] 2019-06-13  (0) 2019.06.13

+ Recent posts