Unity 2017.3の新機能。 スクリプトを個別のビルドファイルにコンパイルする

Unityの以前のバージョンでは、スクリプトは単一のアセンブリAssembly-CSharp.dllにアセンブルされていました。
また、新しいスクリプトを追加すると、コンパイル時間が増加しました。 新しいバージョンでは、フォルダー内のスクリプトに基づいて独自のマネージアセンブリを定義できるようになりました。これにより、特に大規模なプロジェクトでコンパイル時間が大幅に短縮されます。 これで、各マネージアセンブリをUnityプロジェクトの単一のライブラリと考えることができます。

画像

上の図は、プロジェクトスクリプトを複数のアセンブリに分割する方法を示しています。 Main.dllのスクリプトのみを変更する場合、他のアセンブリを再コンパイルする必要はありません。 Main.dllには含まれるスクリプトが少ないため、Assembly-CSharp.dllよりも高速にコンパイルされます。

同様に、Stuff.dllでスクリプトを変更しても、Main.dllファイルとStuff.dllファイルのみが再コンパイルされます。

アセンブリ定義ファイルの使用方法


アセンブリ定義ファイルは、Assets→Create→Assembly Definitionに移動して作成したアセットファイルです。 これは、拡張子が.asmdefのファイルです。

ご注意 アセンブリ定義ファイルが置かれているフォルダーの名前とアセンブリ定義ファイルのファイル名は、アセンブリ名に影響しません。

画像

例:

Scriptsフォルダーを作成します。 そして、彼女のフォルダーはLocomotion、Editor、Utilsです。 Locomotionフォルダーには、NormalとAnvancedの2つのフォルダーがあります。 スクリプトを作成する

Utils→MoveExtension.cs

移動→高度→AdvJump.cs
移動→高度→AdvMoveForward.cs

移動→標準→Jump.cs MoveForward
移動→標準→MoveForward.cs

移動→LookForward.cs

エディター→MoveForwardEditor.cs

MoveForwardEditorスクリプトは、MoveForwardへのリンクが必要になるように、少しのコードを定義します。

using UnityEditor; [CustomEditor(typeof(MoveForward))] public class MoveForwardEditor : Editor { } 

ここで、マネージアセンブリを作成するには、スクリプトフォルダーに.asmdefファイルを作成する必要があります。 さらに、このファイルがLocomotionなどのフォルダーにある場合、アセンブリファイルがこれらのフォルダーで定義されていない場合、アセンブリファイルのAdvancedフォルダーとNormalフォルダーからスクリプトを取得します。

Utilsフォルダーで、アセンブリUtilityAsm.asmdefを作成します
Locomotionフォルダーで、アセンブリファイルLocomotionAsm.asmdefを作成します
Locomotionフォルダー→Anvanced→LocomotionAdvancedAsm.asmdef内
Editor EditorAsm.asmdefフォルダー内

Locomotion→Normalフォルダーには何も作成しません。 このフォルダーからのスクリプトはLocomotionAsmアセンブリに入ります

そして、ここでエラーが発生します...

Assets / Scripts / Editor / MoveForwardEditor.cs(3,22):エラーCS0246:タイプまたは名前空間名「MoveForward」が見つかりませんでした。 アセンブリ参照がありませんか?

画像

MoveForwardEditorスクリプトは、MoveForwardへのリンクが見つからないと誓います。 この場合、MoveForwardは別のアセンブリにあり、使用できません。 これを修正するには、以下を行う必要があります

1. EditorAsmアセンブリファイルを選択します
2. [+]をクリックします
3. MoveForwardがあるため、LocomotionAsmアセンブリファイルを選択します。
4.プラットフォームから、エディターのみを残す
5. [適用]をクリックします

画像

これでエラーはなくなりました。 ライブラリフォルダーを見て、アセンブリを見てみましょう。

画像

プロジェクトをアセンブルした後、EditorAsmを除くこれらのアセンブリも表示されます。 これはエディタースクリプトです。

もう一つ重要な点があります。 アセンブリファイルは、プリプロセッサディレクティブをサポートしていません。 常に静的です。

この記事は、公式ブログを翻訳するために書かれました)記事を読んでくれてありがとう。 あなたのコメントを待っています。

Source: https://habr.com/ru/post/J347034/


All Articles