개발 TIL 71

스파르타 코딩클럽 유니티 4기 프로젝트 SA

https://www.notion.so/teamsparta/9b992ff01e72433f9ffa72501c1ee237 탁박김고문조 | Notion⏰ 입실 퇴실 체크! ⏰teamsparta.notion.site(1차 미니 프로젝트)https://www.notion.so/teamsparta/5P-GG-1376fa1292954dd4a601397ba80ed701 5P.GG | Notion📚Archiveteamsparta.notion.site(2차 프로그래밍 기)https://teamsparta.notion.site/4653289ebeba467e8f39f99def49e964 삼각김밥🍙 | Notion📚Archiveteamsparta.notion.site(3차 팀프로젝트)https://www.notion.so..

개발 TIL 2024.08.20

7/24 부트캠프 개발 TIL (기술 모의 면접 5)

22. 가비지 컬렉터란 무엇인가요?가비지 컬렉터는 CLR의 메모리 관리 소프트웨어로, 할당할 힙 메모리 공간이 부족할 때, 가비지 컬렉터가 힙 메모리를 돌며 사용하지 않는 메모리를 회수합니다. 특히 객체지향 프로그래밍에서 생성자와 소멸자를 호출할 때 발생합니다.23. 가비지 컬렉터의 장점과 단점에 대해 설명해주세요.장점은 클래스의 소멸자를 호출하지 않아도 종료할 때 알아서 해제시켜줍니다.단점으로 이를 많이 사용하면 프로그램 성능저하, 힙 메모리가 부족하면 예측하기 어려운 것이 있습니다.24. 가비지 컬렉터의 세대 개념에 대해 설명해주세요.CLR은 메모리 구역을 나누어 메모리에서 빨리 해제될 객체와 오래도록 살아남을 것 같은 객체들을 구분합니다. 0세대는 가비지 컬렉터를 한 번도 겪지 않은 객체들이 위치한..

개발 TIL 2024.08.08

7/23 부트캠프 개발 TIL (기술 모의 면접 4)

15. 1번과 2번 질문의 답안을 기반으로 struct와 class의 차이점에 대해 설명해주세요.다음과 같이 표로 설명하겠습니다. structclass형식값형 (Value)참조형 (Reference)메모리 할당스택힙변수 할당시실제 데이터의 복사본이 생성객체의 주소값을 저장다른 변수나 인자로 전달할 때데이터가 복사되어 전달참조값이 전달예외클래스의 필드로 사용하면 힙에 할당무조건 힙에 할당상속미지원지워인터페이스지원지원할당과 해제 속도빠름느림(해제하면 가비지컬렉터가 생긴다)생성자자동으로 제공매개변수가 없는 생성자는 정의불가필드초기화 필요 없음기본으로 정의없는 매개변수도 여러 생성자 정의가능필드는 명시적이나 생성자에서 초기16. 얕은 복사와 깊은 복사의 차이점은 무엇인가요?얕은 복사 : 얕은 복사는 객체의 최상..

개발 TIL 2024.08.05

7/22 부트캠프 개발 TIL (기술 모의 면접 3)

9.콜백의 정의와 활용을 설명하세요콜백은 어떤 메서드가 완료된 후에 호출하는 메서드 입니다.주로 비동기, 이벤트, 특정조건이 충족될때 실행되게 합니다.동기 : 작업이 순차적으로 진행되며 하나의 메서드가 실행이 완료될 때 까지 다른 메서드가 수행되지 않는다.비동기 : 작업이 시작되면 중간에 다른 메서드를 실행함으로 제어가 반환되어 다음 작업이 실행, 콜백 함수나 다른 매커니즘을 통해 결과처리가 가능하다.콜백의 사용에시는 코루틴이 있습니다. IEnumerator로 반환형 메서드를 구현하여 yield return이라는 반환 키워드로 이어 수행할 수 있습니다.void Start(){ StartCoroutine(AsyncMethod())}IEnumerator AsyncMethod(){ for(int i=0;i10..

개발 TIL 2024.08.04

7/19 부트캠프 개발 TIL (기술 모의 면접 2)

5. SOLID의 원칙을 설명하세요SOLID기법은 객체지향 프로그래밍에서 유지보수, 확장을 향상시키는 기법입니다. 이를 활용하면 메모리 최적화 가독성 용이, 개발자들간 이해 향상에 장점이 됩니다. SOLID기법의 종류는 5가지를 설명하자면단일책임원칙(SRP) : 각 클래스 하나의 역할에 대해서 책임을 져야하는 원칙. 예를 들어 공격 클래스와 스탯 클래스가 있을 때 공격 클래스는 공격에 대한 역할에 충실해야 하고 스탯 클래스는 플레이어의 정보를 담는 역할에 충실해야 한다. 스탯 클래스에 공격하는 메서드를 추가한다면 역할에 어긋나고 공격할때 스탯 클래스를 사용해야 하는 말도 안되는 의문이 일어날 것이기 때문에 단일책임 원칙이 있어야 한다. 만약에 클래스가 두개 이상의 역할이 있다면 두개 클래스로 나뉘는 것이..

개발 TIL 2024.08.03

7/18 부트캠프 개발 TIL (기술 모의 면접 1)

오늘은 면접에 합격할만한 팁을 정리하려 한다. 1. 객체란 무엇인가요? 클래스와 어떤 관계가 있나요?객체는 클래스에서 만들어진 인스턴스이며 실제 메모리에 할당되어 동작하는 실체를 말합니다.또한 객체는 클래스에서 정의된 속성과 메서드들의 집합체입니다.즉 객체는 클래스에서 만들어진 제품이고 클래스는 객체를 만들기 위한 기계를 말합니다. 스폰지밥이 게살버거를 만들때 스폰지밥은 재료를 가져와 패티를 굽고 빵위에 패티, 치즈, 피클, 양파, 토마토 양상추, 케첩, 머스타드를 올리고 마지막으로 빵을 올리는 작업을 하면 게살버거가 완성이다.무슨 상관이겠냐면 그림처럼 스폰지밥은 유저가 되겠고 주방은 클래스를 의미하고 완성된 게살버거는 인스턴스(객체)가 된다는 것입니다. 또한 주방에서는 스폰지밥이 가져오는 재료들은 속성..

개발 TIL 2024.08.02

7/17 부트캠프 개발 TIL (적 인터랙션 버그)

프로젝트를 테스트하는데 적 NPC의 인터렉션 트리거가 두번 이상 들어가게 되면 배틀용 NPC가 두번 생성되는 버그를 발견했다. 그 이유는 여러가지로 생각했을텐데 근본적인 원인을 찾아보면 OnTriggerEnter에 의해 생기는 버그 때문이다. 우선 문제의 영상부터 보자면플레이어가 NPC 시선트리거를 두번 엔터를 하면 적 NPC가 두번 생성되었다.  이유는 스크립트에서 볼 수 있는데//일반 적 필드의 스크립트 코드이다. private void OnTriggerEnter2D(Collider2D collision) { //적의 감지범위에 들어온 오브젝트가 Player if (collision.gameObject.CompareTag(Define.TAG_PLAYER)) ..

개발 TIL 2024.08.01

7/16 부트캠프 개발 TIL (맵 전환하기)

보통 현재 씬에서 다른 씬으로 전환할때 고민한 것들이캐릭터의 데이터 유지, NPC각각 씬별로 플레이어와 싸웠는지, 플레이어가 이동해야할 위치를 고민할수 있다. 방법은 간단한데 위 항목들을 DonDestroyObject를 걸어서 유지되게끔하면 된다. if (instance == null) { instance = this; DontDestroyOnLoad(gameObject); } else { Destroy(gameObject); }싱글톤이 있을 경우 instance를 저장하고 DonDestroyOnLoad로 저장한다. 이게 기본적인 샘플이다. 그럼 그 안에서 플레이어, NP..

개발 TIL 2024.08.01

7/15 부트캠프 개발 TIL (스킬 구현하기)

이번에는 스킬을 구현할 계획인데, 플레이어 입장에서 상황에 따라 장착할 스킬 또는 해제할 스킬이 있을 것이다.조작법은 Z로 공격키 X, C, V로 스킬을 다양하게 장착하고 사용할 구상이다. 먼저 플레이어에 어울려보이는 스킬을 구현해보자 참격플레이어가 검을 소지한 상태로 스킬을 사용하면 베는 효과를 내어 적에게 대미지를 주는 효과를 구현한다.참격이 나가면 참격하는 효과가 나타나고 일정 시간이 지나면 파티클로 사라지는 효과를 나타냈다. 참격을 프리팹으로 구현한 이유는 플레이어가 착용한 스킬을 사용 및 해제하기위해 스킬 로드를 하여 원하는 스킬이 나가게 했다. 여기서 코드를 보자면 using UnityEngine;public class ChamGyukSkill : BaseSkill{ //스킬을 종류별로 ..

개발 TIL 2024.07.22

7/12 부트캠프 개발 TIL (게임에서 필요한 요소)

지금 프로젝트에서 RPG게임을 구상하고 있는데 플레이어가 적을 다가가서 전투를 이기고 나서 보상 같은 아이템이라도 드랍해야 하는데, 아무것도 없다. 아이템과 무기로는무기는 검과 활밖에 없지만 나중에 강화나 새로운 종류로 추가될 예정이다. RPG에는 성장, 맵, 전투, 아이템, 스탯 등이 있는데 어떤 레퍼런스로 참고할지 감이 안온다.포켓몬 레퍼런스를 떠올리면 이런 장면인데필드맵에서 돌아다니거나오브젝트나 NPC를 통해상호작용을 하여 아이템을 얻고퀘스트를 진행하거나퀘스트나 이벤트를 클리어하고막힌 길을 지나가거나전투씬으로 들어가거나프로젝트에서는 횡스크롤 방식포켓몬의 스탯을 확인하거나플레이어의 상태를 확인하거나이런 다양한 요소들이 많을텐데 이것을 어떤 컨셉이나 레퍼런스를 잡고 구상할 것인지 감이 오지 않는다.(게..

개발 TIL 2024.07.19