# オブジェクト指向開発

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

従来の Unity プロジェクトは、2 つの関連する点でオブジェクト指向です。

* オブジェクト指向プログラミングの原理を採用しています。この原理は、オブジェクトの概念、そのプロパティと関数、これらのオブジェクト間の関係に基づいています。
* 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 Properties 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)
* [ゲームオブジェクト](/engine/6000.0/manual/scripting/get-started/fundamental-unity-types/class-game-object.md)
