본문 바로가기

분류 전체보기

(82)
MVC 패턴이란 MVC는 Model-View-Controller의 약자로, 소프트웨어 디자인 패턴 중 하나입니다. 이 패턴은 소프트웨어를 세 가지 주요 부분으로 분리하여 유지보수와 확장성을 향상시키고 코드의 재사용성을 증가시키는 데 도움을 줍니다. Model (모델): 모델은 데이터를 나타냅니다. 어플리케이션의 상태, 비즈니스 로직, 데이터베이스와의 상호작용 등을 담당합니다. 모델은 사용자 인터페이스나 뷰(View)와 독립적으로 존재하며, 데이터의 상태 변경 및 조작을 담당합니다. View (뷰): 뷰는 사용자에게 데이터를 시각적으로 표현해주는 부분입니다. 사용자 인터페이스(UI)를 구성하고, 사용자가 데이터를 볼 수 있도록 표시합니다. 모델의 데이터를 기반으로 정보를 표시하며, 사용자의 입력을 받아 컨트롤러(Contr..
드로우 콜(Draw Call) 배칭이란 드로우 콜 배칭은 GPU에게 렌더링할 객체들을 효율적으로 그룹화하여 한 번에 처리하는 작업을 의미합니다. 정적 배칭: 정적 게임 오브젝트의 경우 Unity가 이들을 결합하고 함께 렌더링합니다 동적 배칭: 메시가 충분히 작은 경우 CPU에서 버텍스를 변환하고 유사한 버텍스를 함께 그룹화하여 하나의 드로우 콜로 렌더링합니다. 컴퓨터 그래픽스에서는 각각의 객체를 렌더링하기 위해 CPU가 GPU에게 명령을 보내는데, 이때 객체마다의 렌더링 명령을 드로우콜이라고 합니다. 드로우콜은 GPU에게 그리기 위한 정보를 제공하는 명령의 단위입니다. 드로우콜 배칭은 이러한 드로우콜들을 효율적으로 처리하기 위해 비슷한 속성이나 머티리얼(Material)을 가진 객체들을 묶어서 한 번에 처리하는 최적화 기법입니다. 동일한 머티..
유니티 렌더링 파이프라인 렌더 파이프라인은 씬의 콘텐츠를 가져와서 화면에 표시하는 일련의 작업을 수행합니다. 수행하는 작업의 간략한 내용은 다음과 같습니다. 컬링 (Culling): 컬링은 화면에 보이지 않는 오브젝트들을 제거하여 성능을 최적화하는 과정입니다. 카메라의 시야 안에 들어오지 않는 오브젝트들을 제거함으로써 GPU가 처리해야 할 오브젝트의 수를 줄여 성능을 향상시킵니다. 유니티에서는 Frustum Culling(원뿔 컬링)을 사용하여 카메라 시야 내에 있는 것으로 보이는 것만 렌더링 대상으로 삼습니다. 또한, Occlusion Culling(가려짐 컬링)과 같은 기술을 이용하여 화면에서 가려진 오브젝트를 처리합니다. 렌더링 (Rendering): 렌더링은 실제로 오브젝트의 그래픽을 화면에 그리는 과정입니다. 오브젝트의..
디자인 패턴을 사용하는 이유 디자인 패턴은 소프트웨어 개발에서 자주 발생하는 문제들을 해결하고, 유지보수성을 향상시키며, 코드의 가독성과 재사용성을 증가시키기 위해 사용됩니다. 몇 가지 주요한 이유는 다음과 같습니다: 재사용성과 유지보수성: 디자인 패턴은 검증된 솔루션을 제공하여, 유사한 문제에 대해 반복해서 사용될 수 있습니다. 이로 인해 코드의 재사용성이 증가하고, 유지보수가 용이해집니다. 코드의 가독성 향상: 디자인 패턴은 일반적으로 알려진 이름과 구조를 가지고 있어, 다른 개발자들이 코드를 이해하고 수정하는 데 도움을 줍니다. 코드의 일관성을 유지하여 가독성을 향상시킵니다. 좋은 설계 원칙 준수: 디자인 패턴은 소프트웨어 개발의 다양한 설계 원칙을 따르도록 돕습니다. 예를 들어, Singleton 패턴은 단일 객체 인스턴스를..
인터페이스와 추상클래스의 차이 인터페이스(Interface)와 추상 클래스(Abstract Class)는 모두 객체 지향 프로그래밍에서 추상화를 구현하는 데 사용되지만 몇 가지 중요한 차이점이 있습니다. 추상 클래스(Abstract Class): 일반 메서드와 추상 메서드를 모두 포함할 수 있습니다. 추상 클래스는 하나 이상의 추상 메서드(구현이 없는 메서드)를 가질 수 있습니다. 인스턴스화될 수 없습니다. 즉, 추상 클래스로는 객체를 직접적으로 생성할 수 없습니다. 추상 클래스는 상태(멤버 변수)와 구현을 포함할 수 있습니다. 즉, 필드와 메서드의 일반적인 구현을 포함할 수 있습니다. 단일 상속만을 지원하므로, 자바와 같은 언어에서는 하나의 추상 클래스만을 상속할 수 있습니다. 인터페이스(Interface): 추상 메서드만을 포함할..
오버로딩과 오버라이딩의 차이점 오버로딩(Overloading)과 오버라이딩(Overriding)은 객체 지향 프로그래밍에서 중요한 개념입니다. 둘 다 다형성(polymorphism)을 구현하는 방법 중의 하나이지만 서로 다른 의미와 사용 방법을 갖고 있습니다. 오버로딩 (Overloading): 오버로딩은 같은 이름의 메서드나 함수를 여러 개 정의하되, 매개변수의 개수, 타입 또는 순서가 다르도록 하는 것입니다. 동일한 이름의 메서드를 여러 개 선언하여, 각각 다른 매개변수를 받아들일 수 있도록 합니다. 컴파일러는 오버로딩된 메서드를 호출할 때 전달된 매개변수에 따라 적합한 메서드를 선택합니다. 예를 들어, 같은 이름의 함수가 숫자형 매개변수를 받는 경우와 문자열을 받는 경우를 오버로딩하여 다르게 처리할 수 있습니다. 오버라이딩 (O..
23.11.17 기능을 합치는 과정에서 나오는 버그를 수정하였다.
서로 다른 성능을 가진 기기에서 Update 사용 시 주의할 점 Update는 프레임 단위로 호출이 됩니다. 기기 간 성능 차이로 인해 Update 메서드가 실행되는 속도가 다를 수 있습니다. 고사양 기기에서는 빠르게 실행될 수 있지만, 저사양 기기에서는 느릴 수 있습니다. 이에 따라 게임의 성능이나 플레이 경험이 달라질 수 있으므로 이러한 차이를 고려해야 합니다.
23.11.16 인벤토리와 창고의 UI를 다른 UI들의 컨셉과 비슷하게 변경하였다.
상속이란 상속(Inheritance)은 객체지향 프로그래밍에서 중요한 개념 중 하나로, 클래스 간의 계층적 관계를 표현하는 메커니즘입니다. 상속은 기존 클래스의 특성(속성과 메서드)을 새로운 클래스가 재사용하거나 확장할 수 있도록 해줍니다. 기존 클래스를 부모 클래스 또는 슈퍼 클래스(superclass)라고 하고, 새롭게 생성되는 클래스를 자식 클래스 또는 서브 클래스(subclass)라고 합니다. 자식 클래스는 부모 클래스의 모든 속성과 메서드를 상속받아 사용할 수 있습니다. 상속의 주요 특징: 코드 재사용성(Reuse of Code): 부모 클래스의 특성을 자식 클래스가 재사용할 수 있어, 코드의 중복을 피할 수 있습니다. 공통된 기능이나 특성을 여러 클래스에서 사용할 때 유용합니다. 확장성(Extensib..