본문 바로가기

Unity41

[면접 준비][Unity] 드로우 콜(Draw Call) 1. 드로우 콜(Draw Call)이란? - CPU는 현재 프레임에 어떤 것을 그려야 할지 정하고 ,GPU에 오브젝트를 그려달라는 명령을 호출하는데 이 명령이 드로우 콜이다. - 한 오브젝트를 그릴때마다 CPU가 매번 렌더 상태(Render States)들을 변경하라는 명령을 한 뒤, DP Call을 해주는 과정 cf) 렌더 상태(Render States) - 오브젝트를 렌더링하기 시작하면 GPU에서 사용할 텍스쳐, 버텍스, 셰이더 등을 순차적으로 알려줘야 하는데 이러한 순서 정보들을 담은 테이블을 렌더 상태라고 하며, 각각의 요소는 GPU 메모리를 가리키는 포인터를 저장한다. cf) DP Call(Draw Primitive Call) - CPU가 렌더 상태를 변경하는 명령을 GPU에 보내고 나서 마지막.. 2023. 7. 27.
[개발더미][Unity] 타점에 콜라이더 생성, Physic.OverlabSphere() protected override void OnAttack() { // 공격 발생시 동작 print("atk"); // 타점 주변의 콜라이더 중 Monster 레이어를 가진 콜라이더만 가져옴 // 문제 발생 : 3번째 공격부터 콜라이더 인식을 못함ㅋㅋ // 해결 -> rigidbody의 isKinematic을 체크하여 해결! Collider[] monsterColiders = Physics.OverlapSphere(attackPoint.position, 1, attackLayer); foreach (Collider col in monsterColiders) { print(col.gameObject.name + " attack"); if (col.GetComponent() == null) continue;.. 2023. 7. 25.
[개발더미][Unity] 모노 싱글톤 using System.Collections; using System.Collections.Generic; using UnityEngine; public class Singleton : MonoBehaviour where T : MonoBehaviour { private static object lockObject = new object(); // 쓰레드 안전화에 사용 private static bool isQuit = false; // 프로그램이 종료되거나 이상이 있는 경우 판단 private static T instance = null; // 객체 public static T Instance { // 쓰레드 안전화(Thread-Safe) get { // lock블럭 : 한번에 한 쓰레드만 실행되도록 .. 2023. 7. 25.
[개발더미][Unity] FSM #region FSM // FSM을 사용한 이유 // 1. 직관적 -> 상태를 알아보기 쉬움 // 2. 명확성 -> 상태별 수행 동작이 명확하게 분리됨 // 3. 예방 -> 상태가 겹치는 오류 발생 사전 차단 protected enum State { Idle, Move, Attack, Dead } [SerializeField] protected State myState; protected override void ChangeState(State changeState) { // 캐릭터의 상태를 바꾸는 함수 if (changeState == myState) return; // 같은 상태로 변경하는 경우 myAnim.SetBool(myState.ToString(), false); myState = change.. 2023. 7. 24.
[개발더미][Unity] 추상 클래스 using System.Collections; using System.Collections.Generic; using UnityEngine; // 추상 클래스를 사용한 이유 // 1. 설계도 역할 -> 몬스터와 플레이어의 공통 특성을 파악(추상화) // 2. 캡슐화 -> 변수를 드러나지 않게 함(데이터 보호) // 3. 상속 -> 중복 코드 최소화 // 4. 다형성 -> 오버라이드 사용 public abstract class CommonProperties : MonoBehaviour { protected enum State { Idle, Move, Attack, Dead } [SerializeField] protected State myState; protected abstract void ChangeS.. 2023. 7. 24.