[내일배움캠프] Unity 게임 개발 숙련 - 개인과제 마무리(해설)
어제 개인과제로 만들었던 과제를 제출하고 오늘 개인과제 해설영상이 올라왔다. 사소하지만, 얕은지식으로 유니티를 사용하던 내가 깨달은 내용이 많이 있지만 그중 하나를 말하자면 그동안 사용하면서도 걱정을 했었던 유니티 내의 UI끼리 연결해서 작동 시키는 방식을 선호하지 말라는 것이였다. 이부분은 진짜 블로그에 여러번 쓴내용이긴 한데 항상 하면서 내가 잘 하고 있는게 맞나 라는 생각을 하며 정답지가 있다면 엿보고 싶었는데 이번에 좀 알게 된거 같다. 예를 들어 버튼을 만들고 버튼 컴포넌트 onClick() 에 다른 오브젝트들을 연결해서 사용하고 있었다고 친다면 버그가 발생해도 그 버그를 눈으로 볼 때 까지 알아채기가 힘들어진다는 것 이였다. 그동안 UI를 만들고 작동시키는데 스크립트를 짜지 않고 유니티 내부에..
2023.12.14
no image
[내일배움캠프] Unity 게임 개발 숙련 - ScriptableObject(2)
이전 글 처럼 SO를 작성하고 실제 적용시키는 법 이번 강의에서 만들고 있는 3D 서바이벌 게임에 적용한 SO, 그리고 적용시킨 모습을 작성하려 한다. 우선 아래와 같이 SO데이터 스크립트를 작성한다. using System.Collections; using System.Collections.Generic; using UnityEngine; public enum ItemType { Resource, Equipable, Consumable } public enum ConsumableType { Hunger, Health } [System.Serializable] public class ItemDataConsumable { public ConsumableType type; public float value;..
2023.12.13
[내일배움캠프] Unity 게임 개발 숙련 - ScriptableObject(1)
ScriptableObject(스크립터블 오브젝트) 'SO' 라고도 부르는 이것은 대량의 데이터를 저장하고 사용하는 데이터 컨테이너이다. SO를 사용하면 데이터의 값이 복제되는 일을 방지하여 메모리 관리에도 용이하게 쓰인다. 변경되지 않는 데이터를 사용하는 프리팹의 데이터를 일반 변수로 구현할 경우 인스턴스화 할때마다 프리팹에 이 데이터의 사본이 생성되는데 SO를 사용하면 메모리에 SO의 데이터 사본만을 저장하고 이를 참조하는 방식으로 작동한다고 한다. SO 클래스는 유니티에서 기본적으로 제공하는 것으로 모노비헤이비어 클래스와 마찬가지로 기본 유니티 오브젝트에서 파생되지만 게임오브젝트에 컴포넌트로 부착할 수 없고 프로젝트에 에셋으로 저장된다. using System.Collections; using Sy..
2023.12.12
no image
[내일배움캠프] Unity 게임 개발 숙련 - 2D던전입장준비 만들기
주말 + 오늘 한 일 1. 강의 듣기 2D(1회 정독) + 3D (반절) 2. 개인 과제 만들기(필수) 오늘은 강의를 듣다 말고 개인과제를 만들었다. 제출까지 남은 시간을 고려했을 때 강의도 다 이해하지 못하고 어영부영 쫓기듯 과제를 만드는 미래를 봤기 때문이다. 그래서 일단 과제를 듣는 걸 멈추고 개인과제를 확인했는데 두 가지 중 선택해서 한 가지를 만드는 거였다. 첫 번째는 난이도 하, ATM 만들기였고 두 번째는 예전에 C#콘솔로 만들었던 어떤 던전에 입장하기 전을 구현하는 내용이었다. https://iden351.tistory.com/12 [내일배움캠프] C# 문법 종합반 - 개인 프로젝트 마무리 주말 포함 해서 4일 동안 만든 프로젝트를 제출 완료했다. 이번에 만든 프로젝트이름은 TextGame..
2023.12.11
no image
[내일배움캠프] Unity 게임 개발 숙련 - 오브젝트 풀
오브젝트 풀링이란 유니티 개발에 있어서 최적화하는 기법중 하나인데 오브젝트들을 한곳에 저장해두고 필요할때마다 불러서 사용하는것을 의미한다. 프리팹형식으로 오브젝트들을 생성과 파괴를 계속 하는것 보다 메모리를 할당하는 양이 줄어들기 때문에 CPU의 부담이 많이 줄어든다. 유니티 내부에 재사용되지 않는 객체들을 삭제해주는 '가비지 컬렉터'가 있는데 이것 역시 메모리를 할당하기 때문에 발생률을 줄여주는게 CPU의 부담이 덜어진다고 볼 수 있다. 하지만 오브젝트 풀링 방식 역시 메모리를 시작할 때 한에 할당 해주기 때문에 시작시 로딩이 길어진다는 단점이 있을 수 있지만, 게임 중간 메모리를 할당하여 프레임 드랍이되는 방식을 무시 할순 없기 때문에 오브젝트 풀링 방식이 선호된다고 한다. 물론 미리 생성해두는 오브..
2023.12.08
[내일배움캠프] Unity 게임 개발 입문 - 마무리 (깃허브 리드미 전문)
https://github.com/gugmin/Cleaner # Cleaner 벽돌깨기 팀 프로젝트 ## 팀원: 김국민(팀장), 임종운, 조형승, 송하겸, 이승철 > Unity로 개발한 벽돌깨기 게임 프로젝트 입니다. > 5인 팀 프로젝트이며, 고전게임를 현대식으로 재해석 및 개발한 내용입니다. > 소통과 협업을 위주로 개발하였고, 핵심 내용은 '충돌' 입니다. > 개발 기간은 5일입니다. > 구현된 내용은 다음과 같습니다. ## 주요 기능 * 누적 공부시간 * 배경 음악 * 보스 라운드, 보스 패턴 * 아이템 장착 * 시간별 보너스 스코어 * 게임 시작 화면 * 옵션 플레이어 데이터 삭제 기능 * 볼륨 조절 * 난이도 별 게임 시작 * 난이도 별 게임 해금 기능(점심, 저녁) * 상점이동 * 게임 진행..
2023.12.07
no image
[내일배움캠프] Unity 게임 개발 입문 - 깃 허브 메인 폭파사건
아침부터 회의를 진행하고 깃허브데스크탑을 이용해서 merge를 하고 팀원들의 작업내용을 하나로 합쳤다. 기능구현을 8~90% 해서 할 일이 없어진 나는 UI작업을 시작했다. 컨셉에 맞고 깔끔한 이미지를 서치하고 고르는 일만 하는데도 오랜 시간이 지나가 버렸다. 팀원들과 이미지를 공유해서 컨펌을 다같이 하고 선택된 이미지로 UI에 적용시켰다. 그럼에도 뭔가 자꾸 부족하고 보완하고 싶은 부분이 많아 보였다. 근데 또 마감은 지켜야하니까 단념하고 포기했다. - 폭파사건의 전말 - 오늘 작업도 마무리 되어가고 하루도 마무리 되어가는 시점에 슬슬 main에 merge해야 되지 않나? 라는 생각이 스쳤고, 메인을 건들이기 시작했다. 깃허브 메인에서 여러가지 실험을 하다가 깃이그노어를 지워버려서 change부분에 2..
2023.12.07
[내일배움캠프] Unity 게임 개발 입문 - 버튼눌러서 데이터 불러오기(저장)
오늘 데이터 저장에 도전해보려고 PlayerPrefs대해 알아 봤다. PlayerPrefs는 int, float, string 값을 데이터에 저장시킬 수 있는 유니티 엔진 클래스인데 사용방법이 아주 간단해서 이번에 사용하기로 해봤다. 먼저 저장하고 싶은 값이 int형 이라면 PlayerPrefs.SetInt(key, value); 로 저장하고 싶은 값을 저장하고 PlayerPrefs.HasKey(key);로 데이터가 저장되어있는지 확인한 후 PlayerPrefs.GetInt(key, value);로 불러서 사용할 수 있다. int 여서 Get,Set 뒤에 Int가 붙는거지 다른 값형을 사용하고 싶으면 Float, String를 뒤에 붙혀 사용하면 된다. 데이터 저장하는 거 까지는 간단한데 이제 어떤 행동..
2023.12.05
no image
[내일배움캠프] Unity 게임 개발 입문 - 아이템 만들기
오늘은 팀 프로젝트에서 아이템을 만들었다. 이미지도 찾고 만들고 수정도 많이 했다. 그리고 저번주 부터 월, 금 오후4시에 스탠다드반 교육을 진행하는데 동기중 어떤분이 정리해준 내용을 가져와봤다. 참조타입 - 초록색 / 클래스 / 스택은 주소만 저장하고 힙에 저장 / 동적 할당 클래스 - 데이터와 메소드를 정의하는 일종의 틀 얕은 복사 : 내부의 값이 아닌 참조만 복사함으로서 발생하는 문제 값을 복사하는 것이 아닌 같은 곳을 바라보는 문제 string은 불변형식이라 문제가 생기지 않음 값형식은 문제가 없음 나머지는 복사시에 문제가 생길 수 있으니 조심해야한다. 클래스 부모 클래스를 상속받은 자식클래스는 부모클래스에 있는 속성, 메소드 사용 가능 / 변경하여 사용도 가능 실제로 animal 클래스로 객체가..
2023.12.04