개발 달리기
내일배움캠프 5일차 - 팀 프로젝트 시작 본문
1. 오늘 진행한 내용
- 미니 프로젝트 팀별 발표 참여
- TIL 특강
- 우리팀 미니 프로젝트 추가 기능 제작
- GitHub와 WinMerge 연결 시도
2. 학습하며 겪었던 문제점 & 에러
오늘 GitHub와 WinMerge를 연동하여 브랜치 머지 전 충돌되는 파일이 있으면 WinMerge를 띄워서 파일 비교 후
실시간으로 수정이 가능하게 하여 최종 머지를 진행할 수 있게 하려고 했다.
결과적으로는 실패로 끝났다.
진행하면서 2가지 큰 문제게 맞닥뜨렸는데
3-way 방식으로 WinMerge를 사용할 경우 인자 인식쪽에 문제가 생겨 Merge 부분을 최종 반영하는게 아닌
Theirs 부분을 최종 반영했다.
그 때문에 2-way 방식으로 사용했으나 이번엔 Merge 창이 나오지 않아 해당 Merge 창의 내용이 반영됐다.
전체적으로 Git Bash에서 코드 사용하는 방법을 아예 모르는 채로 검색과 Gpt를 이용해서만 진행했는데
결과적으로는 대 실패였고 이것때문에 오늘 다른 공부를 할 시간을 3시간정도 날려먹었다.
남은거라곤 그냥 두 프로그램 호환성 안좋으니까 연동하지 마라이다.
이후 실제 GitHub 커뮤니티에서 WinMerge는 호환성이 좋지 않고 여러 버그 이슈가 있다는
여러 개발자들의 글들을 확인할 수 있었다.
좋은 경험이었다고 하기엔 날린 시간이 너무나 많아서 상실감이 매우 크다.
3. 주말에 학습 할 것은 무엇인지
각종 기능 실제로 만들어서 익혀보기
4. 팀 프로젝트 완료
using UnityEngine;
using UnityEngine.UI;
public class Stage2Hidden : MonoBehaviour
{
public GameObject hidden;
public Text myText;
// Start is called before the first frame update
void Start()
{
int stage = PlayerPrefs.GetInt("stage");
if (stage == 2)
{
hidden.SetActive(true);
myText.text = "20초 내로 4개의 짝을 맞춰라!";
}
}
// Update is called once per frame
void Update()
{
if (GameManager.Instance.cardCount == 8 && GameManager.Instance.time > 20.0f)
{
myText.text = "히든 미션 성공!";
PlayerPrefs.SetInt("Archive2", 1);
}
}
}
오늘은 히든 미션 코드를 짰다.
일단 stage 4의 히든 미션을 짰어야했는데 잘못 짜서 stage 2 기준으로 처음에 짜게 되었다.
코드 작성 자체에는 큰 시간이 걸리지 않았으나 몇가지 문제가 발생했다.
1. 히든 미션이 다른 스테이지에서도 발생함
2. stage 4가 기준이 아니었기에 히든 미션 기능이 의도대로 발동하지 않음
public class HiddenMissions : MonoBehaviour
{
public Text myText;
int stage;
string[] mission = new string[4]
{
"동일한 카드를 3번 이상 뒤집지 않기",
"40초 내로 4개의 짝을 맞춰라!",
"카드 연속으로 4회 맞추기",
"카드 짝 300회 맞추기"
};
string success = "히든 미션 성공!";
string failure = "히든 미션 실패...";
bool isMissionFail = false;
const string matchCountTotal = "matchCountTotal";
// Start is called before the first frame update
void Start()
{
// 처음 켜는 것이라면 카운트 데이터 생성
if (!PlayerPrefs.HasKey(matchCountTotal))
PlayerPrefs.SetInt(matchCountTotal, 0);
stage = PlayerPrefs.GetInt("stage");
missionTextChange();
}
void Update()
{
// 4/11 밤 수정 : 해당 도전과제를 작업하신 팀원님의 프로필이 해금되게끔 하기 위해 달성 시 써주는 Archive0 와 Archive1을 맞바꾸었습니다.
if (stage == 4 && !PlayerPrefs.HasKey("Archive0"))
{
// 제한 시간 내 4짝 이상을 맞춘 상태라면 업적 달성하고 텍스트 변경
if (GameManager.Instance.time > 40.0f)
{
if (GameManager.Instance.cardCount < 24)
{
PlayerPrefs.SetInt("Archive0", 1);
missionTextChange();
}
}
// 제한 시간 내 카드를 24장 내로 줄이지 못하였다면 실패 알림으로 변경
else
{
SetFail();
}
}
// 6스테이지에서 히든 미션을 성공하지 못한 상태로
else if(stage == 6 && !PlayerPrefs.HasKey("Archive2"))
{
// 카드가 4짝 미만으로 남고, 체인이 0일 때
if (GameManager.Instance.cardCount < 8 && GameManager.Instance.GetChain() == 0)
{
// 미션을 성공할 수 없기에 실패 문구 알림
SetFail();
}
}
}
public void missionTextChange()
{
myText.text = "";
if (stage == 2)
{
if (PlayerPrefs.HasKey("Archive1"))
myText.text += success;
else if (isMissionFail)
myText.text += failure;
else
myText.text += mission[0];
}
if (stage == 4)
{
if (PlayerPrefs.HasKey("Archive0"))
myText.text += success;
else if(isMissionFail)
myText.text += failure;
else
myText.text += mission[1];
}
if (stage == 6)
{
if (PlayerPrefs.HasKey("Archive2"))
myText.text += success;
else if (isMissionFail)
myText.text += failure;
else
myText.text += mission[2];
}
Archive3_Text();
}
void Archive3_Text()
{
// 업적이 달성되지 않았다면
if (!PlayerPrefs.HasKey("Archive3"))
{
// 다른 히든 업적이 있을 경우 한 줄을 띄우고
if (myText.text != "")
myText.text += "\n";
// 업적 설명 (수행횟수/300)
myText.text += (mission[3] + " (" + PlayerPrefs.GetInt("matchCountTotal") + "/300)");
// 각종 키 명칭,300도 변수로 바꿔놓고 싶었지만 시간 부족
}
else
{
// 다른 히든 업적이 있을 경우 한 줄을 띄우고
if (myText.text != "")
myText.text += "\n";
// 업적 설명 (수행횟수/300)
myText.text += (mission[3] + " (달성)");
}
}
// 미션 실패 때 호출
// 해당 스테이지에서의 히든 미션 문구를 실패로 변경하여 플레이어에게 알림
public void SetFail()
{
isMissionFail = true;
missionTextChange();
}
// 카드 짝을 맞췄을 때 1씩 증가하는 카운터를 저장
// 업적 달성 횟수를 넘으면 달성
public void matchCountPlus()
{
int successStadard = 300; // 해당 수만큼 짝을 맞추면 업적 달성
int plusCount = (PlayerPrefs.GetInt(matchCountTotal) + 1); // 맞춘 짝의 횟수 누적으로 1 증가
PlayerPrefs.SetInt(matchCountTotal, plusCount); // 1증가한 짝 맞춘 횟수를 저장
// 업적을 달성하면 약속한 값 넣어주기
if (plusCount >= successStadard)
{
PlayerPrefs.SetInt("Archive3", 1);
}
// 변화에 따른 텍스트 변경
missionTextChange();
}
}
결과적으로는 다음과 같이 통합 코드가 짜여졌다.
팀원들이 각각 히든 미션 기능을 만든 것을 통합하여 팀장님이 최종적으로 코드를 정리했다.
이로써 전체적으로 카드 뒤집기 게임 자체는 잘 동작하고
히든 미션도 마지막에 추가해서 어느정도 의도대로 잘 움직이게 되었다.
이번 프로젝트를 진행하며 좋았던 점과 아쉬운 점을 꼽자면
일단 좋았던 점에 있어서는 오늘 프로젝트 팀의 발표를 보면서도 느꼈는데
특출나게 잘 준비했던 팀을 제외하곤 비슷비슷해서 전혀 주눅 들 필요가 없었다.
우리팀의 작품도 충분히 프로젝트 팀처럼 발표를 할 수 있을 만큼 여러 기능이 들어있었다.
아쉬운 점은 조금 많은데
첫번째로 다른 프로젝트 팀에 비해 이틀 늦게 시작한 부분이 제일 아쉬웠다.
두번째는 이 프로젝트에 집중하느라고 팀 스크럼 이틀치를 날렸다. (개인적으로는 재미있던 시간이라)
세번째는 시간이 부족해서 신박한 기능을 넣고 기획을 하지 못했다.
팀원이 한명만 더 있었으면 더 좋은 기능을 만들 수 있을텐데라는 아쉬움도 남는다. (4명이었음)
다음 프로젝트는 꼭 만족할 수 있을 만한 결과를 내고싶다.
'Unity' 카테고리의 다른 글
내일배움캠프 8일차 - 텍스트 RPG 진행 (0) | 2025.04.16 |
---|---|
내일배움캠프 7일차 - C# 문법 복습과 코딩 예제 (0) | 2025.04.15 |
내일배움캠프 4일차 - 팀 프로젝트 시작 (0) | 2025.04.10 |
내일배움캠프 3일차 - 팀 프로젝트 시작 (0) | 2025.04.09 |
내일배움캠프 2일차 - C# 예제 풀이와 Unity 매뉴얼 (0) | 2025.04.08 |