728x90

분류 전체보기 191

Unity 최적화 – Update 가볍게, 캐싱하기

기본 개념게임 개발에서 Update()는 매 프레임 실행되기 때문에 캐싱과 최소화가 핵심이다. 캐싱이란?transform, GetComponent() 같은 값은 매번 접근하면 비용이 큼한 번 가져와서 변수에 저장(캐싱)해두면 성능이 좋아짐private Transform playerTransform;private float moveSpeed;public PlayerMoveState(Player player) { playerTransform = player.transform; // 캐싱 moveSpeed = player.MoveSpeed; // 캐싱} 코루틴으로 Update 줄이기타이머나 반복 동작은 꼭 Update()에 둘 필요가 없다.코루틴(Coroutine)을 쓰면 Update를..

Re-Call Unity 3D 팀 프로젝트 회고

게임 개요Re-Call은 Unity 3D 엔진으로 개발된 시간 루프 메커니즘을 가진 서바이벌 퍼즐 게임입니다.플레이어는 24시간이라는 제한된 시간 안에서 반복되는 루프를 통해 퍼즐을 해결하고 생존해야 합니다. 개발 환경엔진: Unity 2022.3.17f1언어: C#렌더링: Universal Render Pipeline (URP)플랫폼: PC (Windows)Universal Render Pipeline (URP): 렌더링 파이프라인 (14.0.9)TextMeshPro: UI 텍스트 렌더링 (3.0.6)Input System: 입력 시스템 (1.7.0)AI Navigation: NavMesh 기반 AI 내비게이션 (1.1.6) 개발 기간5/26 ~ 6/1 게임 조작법WASD: 이동마우스: 시점 조작E:..

Unity FSM – 적을 3초 보이고 1초 숨기기

기존 방식의 문제Update() + 타이머 → 매 프레임 GetComponent 호출 → 성능 낭비로직이 길어져 가독성이 떨어짐 개선 방법1. Renderer 캐싱한 번만 가져와서 계속 사용 → 성능 향상private Renderer _renderer;public void Enter(Enemy enemy) { _renderer = enemy.GetComponent();} 2. 코루틴으로 시간 제어타이머 대신 코루틴으로 깔끔하게 반복 처리private IEnumerator InvisibilityLoop() { while (true) { _renderer.enabled = true; // 3초 보이기 yield return new WaitForSeconds(3f); ..

OnDrawGizmos를 이용해 범위 시각화하기

기본 개념적 AI의 추격 범위(chasingRange)와 공격 범위(attackRange)를 눈으로 확인하기 위해서 함수를 사용하였다. 코드방법 1. 오브젝트 선택했을 때만 보이게private void OnDrawGizmosSelected() { Gizmos.color = Color.yellow; Gizmos.DrawWireSphere(transform.position, chasingRange); Gizmos.color = Color.red; Gizmos.DrawWireSphere(transform.position, attackRange);} 씬(Scene) 뷰에서 해당 오브젝트 선택 시 원 표시적 오브젝트 선택 후 Scene 뷰 + Gizmos 버튼 활성화하면 바로 확인이 가능하..

Unity GetComponent<Renderer>() 간단 정리

이 코드가 하는 일Renderer renderer = GetComponent();현재 오브젝트의 Renderer 컴포넌트(외형 담당)를 가져옴Renderer는 오브젝트를 화면에 보이게 하는 기능을 담당 대표 활용// 오브젝트 숨기기renderer.enabled = false;// 다시 보이게renderer.enabled = true; 정리GetComponent() → 내 오브젝트의 외형 제어 컴포넌트 가져오기renderer.enabled = false → 안 보임renderer.enabled = true → 보임 주로 투명화, 깜빡이기, 머티리얼 변경 같은 연출에 자주 사용됨!

Unity FSM: 왜 bool 대신 Func<bool>을 쓸까?

기본 개념EnemyTransitionConditions.cs 안에서 이런 코드가 나온다. 이 코드를 공부해보았다.public static Func PlayerInChaseRange(EnemyController e) => () => Vector3.Distance(e.transform.position, e.Player.position) 1. EnemyController e란?그냥 적 하나를 가리키는 매개변수이 적의 위치(e.transform.position)와 플레이어 위치(e.Player.position)를 비교하는 용도 2. Func이란?실행하면 true/false를 돌려주는 작은 함수즉, “조건 검사 공식”을 함수로 만들어둔 것Func condition = () => true;if (condi..

728x90