[내일배움캠프] 실전 프로젝트 - 수료 이후에 관하여
1. 개발자가 되어야 하는가? 부트캠프를 수료 한 뒤에 기획자 / QA / 개발자 다 될 수 있음. 하지만 개발자가 1티어다. 이유는 회사에 소속되지 않아도 돈을 벌 수 있는 직업이고,공백기나 끝이 없다. + Low리스크 high리턴이 가능하다. → 딴 생각 하지말고 개발자 될 생각해라. 2. 시간대가 뒤틀려 있다. 3시에 출근해서 새벽까지 하는 조도 있음 보통은 늦어야 10시 출근이다. → 그러니 내배캠에 출근하던 시간(9시)에 맞춰서 일어나는것을 꾸준히 해라. 3. 기본 강의 계속 다시 봐라 인프런, 패스트캠퍼스, 유데미 등 사이트에 강의 구비해라. 4. 취업은 빠를 수 록 좋다. 부트캠프의 절반 이상이 개발자를 포기한다. 취업기간이 느려짐에 따라 포기할 확률이 늘어난다. UT 할 때 처럼 완벽하지 ..
2024.02.29
[내일배움캠프] 기술면접 연습 - ScriptableObject이란
ScriptableObject이란 무엇이며 어떻게 사용되나요? 유니티에서 사용되는 스크립트 기반 데이터 컨테이너입니다. SO라고도 불리는 이것은 씬에 종속되지 않고 프로젝트 전체에 공유됩니다. SO는 보통 공유되는 데이터 예를 들어 게임 설정, 아이템 정보 등을 저장하는데 사용되고 게임 실행 중에 수정되거나 교체될 수도 있습니다. ScriptableObject의 특징에 대해 설명해주세요. SO는 직렬화되어 프로젝트 내부의 에셋 파일로 저장될 수 있습니다. 이는 게임 실행 중에도 데이터를 유지하고 변경할 수 있음을 의미합니다. 그리고 SO는 클래스를 기반으로 하기 때문에 상속과 다형성을 활용하여 다양한 데이터 유형을 만들 수 있습니다. 이를 통해 코드의 재사용성과 유지 보수성이 향상됩니다. 또한 SO는 게..
2024.02.28
[내일배움 캠프] 기술면접 연습 - Time.deltaTime
Time.deltaTime이란 무엇이며, 사용하는 이유에 대해 설명해주세요. 유니티에서 Time.deltaTime은 프레임 간 경과 시간을 나타내는 값입니다. 이 값은 이전 프레임과 현재 프레임 사이의 시간 간격을 나타냅니다. 일반적으로 기기에 성능에 따라 프레임 속도가 차이가 날 수 있습니다. 이러한 차이로 인해 게임이 시간의 흐름에 따라 균일하게 동작하지 않을 수 있습니다. 이를 해결하기 위해 Time.deltaTime을 사용합니다. Time.deltaTime은 경과한 시간에 따라 값이 변하기 때문에, 프레임 속도와 상관없이 일정한 속도로 게임 오브젝트를 이동하거나 회전시킬 수 있습니다. 간단히 말해, Time.deltaTime은 게임이 느리거나 빠르게 실행되더라도 일정한 속도로 움직이도록 보장하며,..
2024.02.21
[내일배움캠프] 기술면접 연습 - MonoBehaviour 클래스의 주요 메서드
MonoBehaviour 클래스의 주요 메서드와 그 기능에 대해 설명해주세요. MonoBehaviour 클래스의 주요 메서드라고 하면 이전 글인 라이프사이클과 연관이 있습니다. Awake(),Start(),Update() 그리고 OnEnable(),OnDisable() 등이 있고 Collision OnCollisionEnter(Collision collision) 두개의 콜라이더가 충돌했을때 호출되는 메서드입니다. OnCollisionStay(Collision collision), 두개의 콜라이더가 충돌하고 있는 동안 매 프레임마다 호출되는 메서드 입니다. OnCollisionExit(Collision collision) 충돌 되어 있는 오브젝트가 서로 떨어질 때 호출되는 메서드입니다. Trigger T..
2024.02.20
[내일배움캠프] 기술면접 연습 - Life Cycle
유니티에서 Life Cycle(생명주기)이란 게임 오브젝트가 변화하는 순서와 그에 따른 이벤트를 나타내는 것입니다. 순서로는 Awake(), OnEnable(), Start(), Update(), FixedUpdate(), LateUpdate(), OnDisable(), OnDestory() 순으로 작동합니다. Awake()는 게임오브젝트가 활성화되고 스크립트가 시작될 때 한번 호출 됩니다. OnEnable()은 게임 오브젝트가 활성화 될 때 마다 호출 됩니다. Start()는 처음으로 업데이트가 돌기전에 한번 호출 되며 Awake, OnEnable 다음으로 호출 됩니다. Update()는 오브젝트와 스크립트가 활성화 상태라면 프레임 마다 호출 됩니다. FixedUpdate()는 물리 업데이트 주기 마다..
2024.02.19
[내일배움캠프] 기술면접 연습 - MVC 모델이란
MVC 모델이란 무엇인지 설명해주세요. 디자인 패턴 중 하나로 Model, View, Controller 의 약자입니다. Model은 데이터베이스에서 정보를 검색하거나 저장하고, 데이터를 조작하며 해당 데이터의 상태를 관리 하는 역할을 합니다. View는 유저에게 정보를 표시하는데 사용하고 보통 UI를 뜻합니다. Model에 저장되어있는 데이터를 검색하여 View에서 표시 해주는 방식으로 사용합니다. Controller는 유저의 입력을 처리하고 Model 및 View 간의 상호작용을 관리하는 역할 입니다. 유저가 View에서 명령을 내리면 이를 해석하고 Model의 상태를 업데이트 하거나 적절한View를 표시합니다. MVC를 사용하는 이유는 각 구성 요소가 서로 독립적으로 존재하고 변경이 다른 요소에 영..
2024.02.16
[내일배움캠프] 실전 프로젝트 - 렌더링 최적화
최적화할때는 프로파일링을 겸해서 성능이 좋아지는지 확인 해야 하는데 프로파일링을 잘 다루지 못한다면 일단 유니티 Game탭에서 Stats을 눌러 보면된다. Statistics이라는 창이 열리고 그 안에 FPS(초당 프레임)을 확인하거나 Batches 부분을 보면 도움이 된다. Batches는 카메라(View)에 걸린 물체를 렌더링한 수 라고 보면되는데 이를 줄여 프레임을 높이는게 성능향상에 도움이 된다고 한다. 쉽게 말하자면 오브젝트를 카메라에 안걸리게 하면 되는데 이를 컬링(제외)이라고 한다. 최적화를 하는방법 중 코드최적화와 렌더링 최적화 중 코드 최적화는 성능을 올리는 데 도움이 많이 되는데 렌더링 최적화는 고생한 만큼 리턴이 없다고 한다. (현 실력 기준) 굉장히 어렵고 T.A라는 직군이 전담을 ..
2024.02.15
no image
[내일배움캠프] 실전 프로젝트 - 적 입힌 데미지 표시 구현
몬스터가 데미지를 입을 때 체력바가 줄어드는 부분만 있었는데 입힌 데미지 까지 표시 해주기로 했다. 이미 데미지를 받아서 HPBar에 넘겨주고 있었기 때문에 관련 코드들을 활용하면 되겠다고 생각했다. 해서 구현한 코드 public class TakeDamageUI : MonoBehaviour { private EnemyHealthSystem _enemyHealthSystem; private float _duration = 1.5f; private void Awake() { _enemyHealthSystem = GetComponentInParent(); } public IEnumerator DamageUI(TextMeshProUGUI damageAmountTxt) { damageAmountTxt.color..
2024.02.14
[내일배움캠프] 실전 프로젝트 - 튜토리얼 마무리 + UI특강
설연휴 동안 작업한 튜토리얼 타이쿤 가이드 RPG + 타이쿤 가이드 북 타이쿤 진행 UI 최적화 기법 유니티 상단에 윈도우(Window) - 분석(Analysis) - Frame Debugger -> Enable 누르기 화면을 그리는 동안 어떤 단계를 거쳐서 그려지는지 나옴 단계를 줄이는 것이 좋음 드로우콜(DrawCall) : CPU가 GPU에게 그리게 시키는 과정, 횟수가 많을 수록 부하가 심해짐 Batches - 드로우콜, 셋패스콜(쉐이더 메테리얼 그리라고 시키는 것)? 합친거 한 방에 다 그리는 법 하이어라키 창에서 2D - Sprite AtlasObjects for Packing 이미지를 넣을 수 있고 폴더를 통째로 넣을 수도 있음 -> 아틀라스에 넣은 부분 실행 하면 단계적으로 그리는게 아니라..
2024.02.13