본문 바로가기

C#/C# 학습 (TIL)32

C# 오브젝트 풀링 이전 팀프로젝트 때 정리해둔 내용이다. (제가 직접 한땀한땀 만든 피피티..) 게임 내에서 총알같은 오브젝트를 계속해서 생성하고 파괴하면 C#같은 경우는 가비지 콜렉터를 불러서 이를 처리하는데, 그 때마다 성능이 저하된다. 이를 방지하기 위해 오브젝트 풀에 미리 오브젝트를 일정량 생성해놓고 이를 꺼내와서 쓰고 다시 풀에 넣어두는 방식으로 구현하는 식의 최적화 기법이다. 일정량 이상의 오브젝트가 필요하면 그때그때 더 만들어 쓸 수 있다. 오브젝트 풀링을 구현하는 방법은 여러가지가 있는데 나는 큐 자료구조를 활용했다. 실제 프로젝트 때 작성한 코드이다. 1번. 2번에서 생성된 오브젝트를 큐에 enqueue하고 비활성화 해두기 2번. 매개변수 count만큼 오브젝트를 생성 3번. 다른 스크립트에서 오브젝트를 .. 2022. 6. 26.
C# OverlapSphere / 콜라이더 배열 overlapsphere 구체 모양으로 충돌체의 정보를 받아오는 함수이다. 범위 충돌을 다룰 때 용이하다. Collider[] hitColliders = Physics.OverlapSphere(transform.position, 5f); 현재 위치에 반지름이 5f인 구체를 그리고 그 안에서 충돌하는 콜라이더를 모두 배열로 받아온다. 해당 실습은 타겟을 향해 레이캐스트를 쏘면서 동시에 일정 타겟이 범위 내에 존재한다면(overlapsphere 사용) target의 위치로 움직이게 하는 실습이다. using System.Collections; using System.Collections.Generic; using UnityEngine; public class player2 : MonoBehaviour { p.. 2022. 6. 26.
유니티 Roll a ball 실습 유니티를 처음 배우기 시작했던 4월 초에 진행했던 실습을 기록하기 위해 늦게 글을 쓴다. 유니티 기본 제공 튜토리얼을 응용한 미니 게임으로, 유튜브에서 골드메탈님 영상을 참고해 제작했다. 참고 영상은 마지막에 링크를 달아두었다. 진행방식은 player가 공으로, 해당 스테이지의 아이템을 모두 먹은 후 터치포인트에 도달하면 다음스테이지로 이동하는 식이다. 아래 사진들은 내가 구성한 스테이지1~3의 모습이다. 스크립트는 총 4개로 구성했다. using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.SceneManagement; //게임 다시시작을 위한 라이브러리 public class Play.. 2022. 6. 26.
C# 중급문법 Day9 디자인패턴 : 커맨드패턴, 퍼사드패턴 커맨드패턴(Command Pattern) public interface ICommand { void Execute(); } public interface IButtonCommand : ICommand { } class Lamp: IButtonCommand { public void TurnOn() { Debug.Log("불 킴"); } public void Execute() { TurnOn(); } } class Alarm : IButtonCommand { public void AlarmStart() { Debug.Log("알람울림"); } public void Execute() { AlarmStart(); } } class Button { IButtonCommand buttonCommand; public.. 2022. 6. 24.