# 객체 지향 개발

> Develop Unity projects with the traditional object-oriented programming philosophy and architecture.

기존 Unity 프로젝트는 다음의 관련된 두 가지 방식으로 객체 지향적 성격을 띱니다.

* 객체 지향 프로그래밍 철학은 객체의 개념, 특성 및 기능, 이러한 객체 간의 관계를 기반으로 합니다.
* Unity 프로젝트의 원래 아키텍처는 `UnityEngine.Object`에서 파생된 유형이 포함된 오브젝트 기반 모델을 사용합니다. 이 모델에서 씬은 다른 유형의 오브젝트와 상호 작용하고 제어되는 게임 오브젝트로 구성됩니다.

객체 지향 개발의 대안은 데이터 지향 개발이며, 이는 프로그래밍 철학과 이러한 원칙을 구현하는 데 도움이 되는 일련의 기술을 모두 지칭합니다. 데이터 지향 방식은 규모가 커질수록 강력한 성능 이점을 제공하지만 경험이 없는 개발자가 배우기에는 더 어려울 수 있습니다.

객체 지향 개발과 데이터 지향 개발은 상호 배타적이지 않으며 양측 요소를 결합할 수 있습니다. 데이터 지향 개발에 대한 자세한 내용은 [Unity의 데이터 지향 기술 스택](https://unity.com/dots)을 참조하십시오.

| **항목**                                                                                                        | **설명**                                                                                        |
| ------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- |
| [오브젝트 변환](/engine/6000.0/manual/transforming-objects.md)                                                      | 위치, 회전, 스케일을 변경하여 오브젝트를 이동하고 변환합니다.                                                           |
| [시간 및 프레임 속도 관리](/engine/6000.0/manual/scripting/object-oriented-development/managing-time-and-frame-rate.md) | Unity가 시간을 측정하는 방법을 이해하여 애플리케이션에서 시간이 전달되는 속도를 관리하고 적절한 시간 스케일에 따라 값을 업데이트할 수 있습니다.           |
| [런타임 시 프리팹 인스턴스화](/engine/6000.0/manual/scripting/object-oriented-development/instantiating-prefabs.md)       | 프로그래밍 방식으로 프리팹을 인스턴스화하여 상대적으로 적은 코드로 게임 내에서 구조와 인상적인 효과를 구현할 수 있습니다.                          |
| [이벤트 처리](/engine/6000.0/manual/scripting/object-oriented-development/event-handling.md)                       | 사용자 입력, 오브젝트 충돌, 물리 및 렌더링 업데이트 같은 이벤트에 애플리케이션을 응답하도록 만듭니다.                                    |
| [프레임 간 작업 분할](/engine/6000.0/manual/scripting/object-oriented-development/coroutines.md)                      | 코루틴을 사용하여 여러 씬에서 동기식으로 작업 실행을 분할합니다. 이는 여러 프레임에 걸쳐 점진적으로 진행해야 하는 작업(예: 페이드아웃 효과)에 유용할 수 있습니다. |
| [웹 서버와 상호 작용](/engine/6000.0/manual/scripting/object-oriented-development/web-request.md)                     | UnityWebRequest 시스템을 사용하면 애플리케이션이 HTTP를 통해 웹 서버와 상호 작용할 수 있습니다.                               |
| [런타임 시 오브젝트에 기능 추가](/engine/6000.0/manual/scripting/object-oriented-development/properties.md)                | Unity 프로퍼티 API를 사용하여 방문자 디자인 패턴을 구현하고 런타임 시 .NET 오브젝트에 새 작업을 추가합니다.                           |
| [일반적인 수학 함수 사용](/engine/6000.0/manual/scripting/object-oriented-development/class-mathf.md)                   | 애플리케이션에서 삼각 함수, 로그 함수, 기타 함수를 비롯한 일반적인 수학 함수를 사용합니다.                                          |
| [무작위성 활용](/engine/6000.0/manual/scripting/object-oriented-development/class-random.md)                        | 일반적으로 필요한 유형의 무작위 값을 생성합니다.                                                                   |
| [기즈모 및 핸들](/engine/6000.0/manual/scripting/object-oriented-development/gizmos-and-handles.md)                 | 씬 뷰와 게임 뷰에 선과 셰이프뿐만 아니라 인터랙티브 핸들과 컨트롤도 그릴 수 있습니다.                                             |
| [Null 레퍼런스](/engine/6000.0/manual/scripting/object-oriented-development/null-reference-exception.md)          | Unity 프로젝트에서 null 레퍼런스 예외를 이해하고 진단합니다.                                                        |
| [Unity 속성](/engine/6000.0/manual/scripting/object-oriented-development/unity-attributes.md)                   | Unity 전용 C# 속성을 사용하여 코드에 대한 특수 동작을 정의합니다.                                                     |

## 추가 리소스##additional-resources

* [Unity의 데이터 지향 기술 스택](https://unity.com/dots)
* [GameObject](/engine/6000.0/manual/scripting/get-started/fundamental-unity-types/class-game-object.md)
