개발/하스스톤+전장

전장+하스스톤 느낌

kimchangmin02 2025. 12. 28. 21:38

투사체도 가져오거나, 

brutal boss 코드 구조 어케 되어잇는지 읽어보는방법도

 

 

----------

하스스톤+ 전장 느낌

 

흑마,냥꾼, 죽기, 악사 ㄲㅈ

 

도적: 상대직업 카드,테스 

사제: 힐, 부활사제 ,체력(죽기 컨셉 가져올수도 ) 

전사 :버티기,도발,방어도

성기사:천보

(모든 캐릭터에게 천상의 모호막을 부여합니다), 천상의 보호막 흡수

 

주술사: 전함(두억)

법사: 주문 코스트 감소, 빙결

드루이드:빅하수인,마나사기 

 

 

대신, 전장에 있는, 턴 끝날때 효과발동하는 하수인들을 집어넣는데, 효과좋게 집어넣으면 채용되지않을까

가령, 3코2 5내 턴 끝날대 무작위 아군 하수인에게 생명력 +2

이건 사긴가

(근데 요즘에는 이래도 안쓰일듯 ㅇㅇ;

 

내턴이 끝날때, 나에게 비밀을 시전합니다 

적의 비밀 삼키기 

 


 

  1. Canvas 안에 Image를 만들고 그 안에 Text들을 배치합니다 (이름용, 공격력용, 체력용).
  2. 이것을 Prefab으로 저장합니다.
  3. CardDisplay.cs 스크립트를 만들어, 아까 만든 CardData를 집어넣으면 텍스트들이 자동으로 바뀌게 코딩합니다.

자동으로 바뀌도록 하는게, 이것의 주된 역할이구나 

 

 

 

일단, 깃허브로 가능하다네 

1. .gitignore 설정 (가장 중요!)

유니티 프로젝트 안에는 내가 만든 코드나 에셋 외에도, 유니티가 내부적으로 생성하는 임시 파일(Library, Temp, Obj 폴더 등)이 아주 많습니다. 이런 파일들까지 깃허브에 올리면 용량도 너무 커지고 충돌이 잦아집니다.

  • 해결법: 깃허브 레포지토리를 만들 때 Add .gitignore 항목에서 **'Unity'**를 선택하세요. 그러면 꼭 필요한 파일만 올라가도록 자동으로 설정됩니다.

2. Git LFS (Large File Storage) 사용

깃허브는 기본적으로 파일 하나당 용량 제한(보통 100MB)이 있고, 전체 용량이 커지면 느려집니다. 유니티의 고화질 텍스처나 3D 모델, 오디오 파일은 용량이 크기 때문에 Git LFS라는 기능을 사용해야 합니다.

  • 이유: 큰 파일을 깃허브 서버가 아닌 별도의 저장소에 효율적으로 보관하기 위해서입니다.

3. 유니티 설정 (Meta 파일 관리)

유니티의 모든 에셋에는 .meta라는 숨겨진 파일이 따라붙습니다. 이 파일에 해당 에셋의 고유 ID와 설정 정보가 들어있습니다.

  • 주의사항: .meta 파일을 같이 올리지 않으면 다른 컴퓨터에서 프로젝트를 열었을 때 프리팹이 깨지거나 연결이 끊어집니다. 깃허브에 올릴 때 반드시 .meta 파일도 함께 커밋(Commit)해야 합니다.



 

1단계: 유니티 프로젝트 생성 및 화면 설정

  1. Unity Hub에서 2D Core 템플릿으로 프로젝트를 만듭니다.
  2. 상단 메뉴 Window > General > Game 창을 켜서 화면 비율을 16:9 (또는 1920x1080)로 고정합니다. (하스스톤 비율)

2단계: 게임판 구획 나누기 (UI 레이아웃)

하스스톤의 판을 머릿속으로 그리며 '영역'을 나눕니다.

  1. Hierarchy(계층 구조) 창에서 우클릭 -> UI > Canvas를 만듭니다. (모든 UI의 부모입니다.)
  2. Canvas 안에 우클릭 -> Create Empty를 눌러 4개의 빈 오브젝트를 만들고 이름을 다음과 같이 정하세요.
    • EnemyField: 상대방 하수인들이 놓일 자리 (화면 상단)
    • PlayerField: 내 하수인들이 놓일 자리 (화면 중간)
    • PlayerHand: 내 손패 카드가 있을 자리 (화면 하단)
    • TurnEndButton: 턴 종료 버튼 (화면 오른쪽)
  3. 팁: 각 영역이 어디인지 눈에 보이게 하려면, 각 오브젝트에 UI > Image를 추가하고 색깔을 투명하게(회색 등) 깔아두면 구분이 편합니다.

3단계: "카드" 한 장의 생김새 만들기 (Prefab)

이제 카드의 '껍데기'를 만듭니다.

  1. Canvas 안에 UI > Image를 하나 만듭니다. (이름: Card_Template)
    • 크기를 카드 비율(예: 가로 150, 세로 220)로 조절합니다.
  2. Card_Template의 자식으로 다음 내용들을 추가합니다 (UI > Legacy > Text 또는 TextMeshPro 사용):
    • CostText: 왼쪽 위 (마나 수정)
    • NameText: 중간 위 (카드 이름)
    • DescriptionText: 중간 아래 (카드 설명 - "턴 종료 시 +1/+1" 등)
    • AttackText: 왼쪽 아래 (공격력)
    • HealthText: 오른쪽 아래 (체력)
  3. 다 만드셨다면, 이 Card_Template 오브젝트를 **Project 창(폴더창)**으로 드래그 앤 드롭 하세요.
    • 그러면 파란색 아이콘의 **Prefab(프리팹)**이 됩니다. 이제 이걸 무한복제해서 쓸 수 있습니다.

4단계: 자동으로 정렬되게 만들기 (핵심 기능)

카드를 한 장씩 배치하기 힘드니까 유니티의 '자동 정렬' 기능을 씁니다.

  1. 아까 만든 PlayerHandPlayerField, EnemyField 오브젝트를 선택합니다.
  2. Inspector(검사) 창에서 Add Component를 누르고 **"Horizontal Layout Group"**을 검색해서 추가합니다.
  3. 그 안의 옵션에서 Child AlignmentMiddle Center로 바꿉니다.
  4. 확인 작업: 이제 아까 만든 Card_Template 프리팹을 PlayerHand 오브젝트 안으로 막 끌어다 넣어보세요. 카드가 옆으로 촤르륵 자동으로 퍼진다면 성공입니다!

5단계: 데이터 시트(설계도) 구상하기

이제 코딩을 하기 직전 마지막 단계입니다. 엑셀이나 메모장에 만들고 싶은 카드 5장만 적어보세요.

  • 카드 1: 1코스트, 1/1, 평범한 하수인
  • 카드 2: 2코스트, 2/3, 평범한 하수인
  • 카드 3 (전장 스타일): 3코스트, 2/2, [효과] 내 턴이 끝날 때, 내 모든 하수인에게 체력 +1 부여
  • 카드 4 (주문): 1코스트, [효과] 하수인 하나에게 데미지 2를 줍니다.

요약: 지금 바로 유니티에서 하실 일

  1. Canvas 만들기
  2. Hand, Field 영역 이미지로 대충 위치 잡기
  3. 카드 모양(이미지+글자들) 하나 만들어서 Prefab으로 저장하기
  4. Hand 영역에 Horizontal Layout Group 붙여서 카드 여러 장 넣었을 때 이쁘게 나오나 확인하기

여기까지 하시면 "와, 진짜 하스스톤 판 같네?"라는 느낌이 드실 겁니다.
이게 다 되면, 그때 **"이 카드들을 어떻게 마우스로 끌어서 필드에 놓지?"**라는 질문으로 넘어가면 됩니다. 여기까지 해보시겠어요? 해보시다 막히는 부분(예: 글자가 안 보여요, 배치가 이상해요 등) 있으면 바로 말씀해주세요!