# スクリプトの概要

> Understand the role of scripting in your project and how it works at a high level.

Unity はカスタマイズや拡張が可能な設計になっており、ほぼすべての機能がある程度スクリプト可能です。さまざまな[エディタービュー](/engine/6000.0/manual/unity-editor/using-the-editor.md)で設定できる項目の多くは、コードで相互作用できる public C# クラス表現が対応しています。

エディター API を使用して、エディターオーサリングツールをカスタマイズおよび拡張し、開発ワークフローを改善することができます。エンジン API を使用して、グラフィックス、物理演算、キャラクターの動作、ユーザー入力への応答など、アプリケーションのランタイム機能を定義することができます。

[スクリプティング API リファレンス](ScriptRef:index)は、すべてのパブリック Unity API について完全で信頼できるリファレンスを提供します。マニュアルには、追加のコンテキストとガイダンスが記載されています。

## Unity スクリプティング環境##the-unity-scripting-environment

Unity は C# プログラミング言語でのスクリプティングをサポートしています。C# (C シャープと発音) はマネージ型のオブジェクト指向プログラミング言語で、.NET プラットフォームの一部であり、クロスプラットフォームの .NET ランタイムで実行されます。互換性のある DLL をコンパイルできる場合は、Unity でその他の .NET 言語も使用できます。詳細は、[マネージプラグイン](/engine/6000.0/manual/scripting/compilation-and-code-reload/plug-ins/managed.md)を参照してください。

スクリプティング環境とは、以下の両方を指します。

* コードを記述する独自のローカル環境またはコンテキスト。これには、コードエディター (IDE)、統合ソース管理ソリューション、OS が含まれます。
* Unity が提供する C# スクリプティング環境。Unity の所定のバージョンは、.NET プラットフォームの所定のバージョンをサポートしています。これにより、コードで使用できる .NET ライブラリが決定されます。

スクリプティング環境とツールの詳細については、[環境とツール](/engine/6000.0/manual/scripting/environment-and-tools.md)を参照してください。

## Unity でのスクリプティングの仕組み##how-scripting-in-unity-works

C# スクリプト (拡張子が `.cs` のファイル) はプロジェクト内の[アセット](/engine/6000.0/manual/working-in-unity/assets-and-media/asset-workflow.md)で、`Assets` フォルダーに格納され、[アセットデータベース](/engine/6000.0/manual/working-in-unity/assets-and-media/asset-workflow/asset-database.md)の一部として保存されます。一般的な [Unity のビルトインタイプ](/engine/6000.0/manual/scripting/get-started/fundamental-unity-types.md)から派生したテンプレートスクリプトは、**Assets> Create** メニューの **Scripting** サブメニューから作成できます。

デフォルトの[外部スクリプトエディター](/engine/6000.0/manual/unity-editor/editor-features/preferences.md#extrnal-tools)を設定します。これは、Unity がスクリプトアセットを開いて編集するプログラムです。通常、これは Unity の開発用に[サポートされている IDE](/engine/6000.0/manual/scripting/environment-and-tools/ide-support.md) の 1 つです。

作成したコードがアクティブな [.NET プロファイル](/engine/6000.0/manual/scripting/environment-and-tools/overview-of-dot-net-in-unity/dotnet-profile-support.md)と互換性のある限り、独自の標準の C# タイプとロジックを作成してゲームで使用することもできます。ただし、スクリプトで作成したタイプは、Unity のビルトインタイプから継承するときに Unity で機能を追加できます。

カスタムタイプが [UnityEngine.Object](/engine/6000.0/manual/scripting/get-started/fundamental-unity-types/class-object.md) から継承されている場合は、Inspector ウィンドウのフィールドに割り当てることが可能です。[MonoBehaviour](/engine/6000.0/manual/scripting/get-started/fundamental-unity-types/class-mono-behaviour.md) を継承すると、スクリプトをゲームオブジェクトにコンポーネントとしてアタッチし、シーン内のゲームオブジェクトの動作を制御できます。

継承できる Unity の基本タイプの詳細については、[Unity の基本タイプ](/engine/6000.0/manual/scripting/get-started/fundamental-unity-types.md)を参照してください。

Inspector でのスクリプトの表示とスクリプトコンポーネントの編集の詳細については、[スクリプトの検査](/engine/6000.0/manual/scripting/get-started/inspecting-scripts.md)を参照してください。

## コンパイルとコードのリロード##editor-and-runtime-scripts

[コンパイル](/engine/6000.0/manual/scripting/compilation-and-code-reload/script-compilation.md)によって、記述した C# コードが、特定のターゲットプラットフォームで実行可能なコードに変換されます。コンパイルには、自分で制御できる側面とできない側面があります。[スクリプトをアセンブリに整理する](/engine/6000.0/manual/scripting/compilation-and-code-reload/script-compilation/assembly-definition-files.md)ことで、不要な再コンパイルを減らし、依存関係を効果的に管理できます。[条件付きコンパイル](/engine/6000.0/manual/scripting/compilation-and-code-reload/script-compilation/conditional-compilation.md)を使用すると、コードのセクションを選択的にコンパイルに含めたり除外したりできます。

設定に応じて、Unity はさまざまなコンテキストで[コードを再コンパイルおよびリロード](/engine/6000.0/manual/scripting/compilation-and-code-reload.md)します。コードのリロードは、変更を反映させたり、編集モードと再生モード間の遷移時にステートを保持したりするために重要ですが、パフォーマンスやイテレーション時間にも影響します。これらのコストを理解し、Unity のコードのリロード動作をどのように設定すればコストを軽減できるかを理解することが重要です。

## 追加リソース##compilation-and-code-reload

* [スクリプトの作成](/engine/6000.0/manual/scripting/get-started/creating-scripts.md)
* [スクリプトの名前設定](/engine/6000.0/manual/scripting/get-started/naming-scripts.md)
* [Inspector ウィンドウのスクリプト](/engine/6000.0/manual/scripting/get-started/inspecting-scripts.md)
* [Unity の基本タイプ](/engine/6000.0/manual/scripting/get-started/fundamental-unity-types.md)
