본문 바로가기

Unity/Unity 스파르타

(38)
8주차 - 인벤토리와 아이템 설명창의 재사용 + 상점 인벤토리 구현과, 아이템 설명창을 만들어 보자! 1. 인벤토리를 어떻게 구현할 것인가. 일단 아이템을 어떤식으로 관리할 것인가. 스크립터블 오브젝트를 사용해 아이템 데이터를 만들어 놓자. 아이템이 가지고있을 수 있는 스텟 변수 정하기 상점 또는 새로운 아이템을 얻었을때 새로운 스크립터블 오브젝트를 만들어 줘야 하기 때문에 카피 함수를 만들어 놓자 새로운 아이템이 장비아이템인 경우 인벤토리에 같은 아이템이 있더라도 서로 다른 아이템 취급을 해줘야 함. 같은 아이템이지만 아이템을 강화시키거나, 내구도가 감소했을 경우 두개의 아이템의 능력치가 서로 달라지게됨. 아이템의 능력치를 쉽게 가지고 올 수 있는 방법이 뭐가있을까. 아이템의 능력치를 가져올때 , 능력치 이름과 수치를 가지고있는 구조체를 만들어 리스트에 ..
6주차 - 2D 게임 프로젝트 보스를 만들어 보자. 보스가 생성되면 만들어놓은 공격패턴들을 죽기전까지 랜덤하게 계속 실행 시키도록 하자. 1. 오프닝 애니메이션 실행 (보스몬스터 hp바 액티브) 2. 공격패턴 만들기 delegate void AttackPattren(); 만들고 List 리스트를 만들어서 공격패턴을 리스트에 담아서 랜덤하게 공격패턴을 실행 시켜주도록 하자 3. 시작 코루틴에 랜덤한 인덱스값으로 패턴리스트에 공격패턴 시작 4. 죽기전까지 공격패턴 반복 실행 5. 죽으면 OnDeathEvent 실행하기.(CallOnDeathEvent) 원거리 공격 몬스터도 원거리몬스터 스크립트에 공격패턴을 만들어놓고 인덱스로 설정해 각각 다른 원거리 공격을 할 수 있게 만들어보자. 보스몬스터 어택 애니미에신 수정,( 아랫쪽까지 대미지 받..
6주차 - 2D 게임 프로젝트 나의 구현 파트는 몬스터.. 오늘은 기본적인 몬스터의 움직임, 플레이어의 추적을 구현해볼 것 몬스터의 이동 최대한 재활용성을 살리는 코드를 짜보자.. 1. MonsterController 에서 이벤트를 관리하자. MonsterStats : 몬스터 스탯 MosnterMovement : 움직임 MonsterLifeCycle : 대미지 및 생명 관련 MonsterAnimationController : 애니메이션 근거리 몬스터, 원거리 몬스터에 따라 attck 스크립트를 사용 몬스터 콘트롤러에 [RequireComponent(typeof())] 어트리뷰트를 사용해 필수 스크립트를 설정해주자 움직임 MosnterController 에 OnMoveEvent 델리게이트에 연결해서 사용하자 플레이어가 몬스터의 영역에 ..
6주차 - Object Pool 예제 ( + Animator.StringToHash() ) 목차 1. Object Pool 예제 2. Animator.StringToHash() 1. Object Pool 예제 Object Pool? 더보기 프로그래밍에서 리소스를 효율적으로 관리하기 위해 사용되는 디자인 패턴입니다. Object Pool 은 미리 생성된 객체들을 보관하고 필요할 때 재사용함으로써 객체 생성과 소멸의 오버헤드를 줄이고 성능을 향상시킵니다. 1. 스크립트 작성 이름, 프리펩, 사이즈를 가지고있는 구조체를 생성하고 구조체를 가지고있는 리스트 생성합니다 [System.Serializable] public struct Pool { public string tag; public GameObject prefeb; public int size; } public List pools; public..
5주차 - Tilemap(2D) 1. 그리기 순서 설정 2. Sprite Pivot 설정 3. Tilemap 4. Tilemap 충돌 정보 추가히기 5. 타일맵 콜라이더 최적화 1. 그리기 순서 설정 2D 에서 화면상에 캐릭터가 어떤 오브젝트보다 뒤에있는 경우 앞에 있는 오브젝트에 캐릭터가 가려져야 합니다. 이러한 그리기 순서를 해결 하기 위해 간단하게 그래픽스 설정을 해줍니다. 2d 에서는 y좌표값이 작을수록 나중에 나중에 그려져야 합니다. Edut - Project Setting로 이동해 좌측 메뉴 Graphics로 들어갑니다. Camera Settings에서 Transparency Sort Mode 필드를 찾습니다. 여기에서 스프라이트가 그려지는 순서가 결정됩니다. 드롭다운 메뉴를 통해 Default에서 Custom Axis로 변..
5주차 - Quest 만들기 순서 퀘스트 클래스 만들기 퀘스트 만들기 1. 퀘스트 클래스 만들기 퀘스트마다 공통적으로 가지고있는 변수들을 만들고 필수 메서드를 virtual 로 만들어 퀘스트마다 오버라이딩을 해준뒤에 상속시켜 퀘스트를 만들 것 입니다. ShowQuestInfo - 퀘스트 정보를 보여주는 메서드 Reset - 퀘스트 포기를 했을시 또는 반복 퀘스트의 경우 퀘스트 진행도를 초기화 시기는 메서드 CheckCondition - 퀘스트 클리어 조건을 충족하는지 확인하는 메서드 CheckCondition(string targetName) - 퀘스트 클리어 조건 충족하는지 확인하는 오버로딩 메서드 Clear - 퀘스트 클리어시 실행할 메서드 ClearInfo - 퀘스트 클리어시 보여줄 UI public enum QuestStat..
리스트, 구조체 - '깊은복사' '얕은 복사'에 대한 고찰 순서 1. 구조체에 대한 고찰 2. 구조체 객체를 저장하기위한 동적 리스트를 생성했을때 1. 구조체에 대한 고찰 *값 형식 *구조체는 값에 의한 복사를 수행하며, 변수에 할당된 구조체의 복사본을 수정해도 원래의 구조체에는 영향을 주지 않습니다. 따라서 구조체의 멤버 변수를 수정하려면 해당 구조체를 새로 생성하여 수정된 값을 할당해야 합니다 메모리 할당 구조체는 값 형식이므로 스택(Stack)에 직접 메모리를 할당합니다. 메모리 할당과 해제가 빠르며 데이터의 크기가 작을 때 유리합니다. 그래서 데이터의 읽기와 쓰기가 빠르다는 장점이 있습니다. int a = 10; int b = a; *값 형식은 변수 간에 값이 복사되는데, 변수의 동작 방식을 설명하는 개념입니다. 값 형식의 변수는 해당 변수에 저장된 값이..
4주차, 플레이어의 데이터 저장하기, 불러오기 플레이어의 데이터파일 저장하고 불러오기 1. 시작 2. 파일 저장하기 3. 파일 로드하기 1. 시작 Nuget 관리에서 Newtonsoft.Json을 찾아 인스톨 해줍니다. 그리고 json으로 파싱할 곳에 using 으로 Newtonsoft.Json을 참조해 줍니다. Newtonsoft.Json란 ? 더보기 JSON 데이터를 처리하는 데 사용되는 라이브러리입니다. 이 라이브러리는 JSON 데이터를 직렬화(객체를 JSON 문자열로 변환)하고 역직렬화(JSON 문자열을 객체로 변환)하는 기능을 제공하여 데이터를 간편하게 주고받을 수 있도록 도와줍니다. 2. 파일 저장하기 더보기 직렬화(Serialization)는 객체를 데이터 스트림이나 바이트 배열과 같은 형태로 변환하는 과정을 말합니다. 이렇게 변환된 데..