はじめに
ビルド時にAssets/*/Editorディレクトリ内のエディター関連のコードが含まれている際に以下のようなエラーが発生した際にどのような対応をされていますか?
Assets\*\Editor\*.cs(*,*): error CS0246: The type or namespace name 'Editor' could not be found (are you missing a using directive or an assembly refer
数ファイルだけなら以下のような方法でEdior環境でのみ動作するようにスクリプトを修正をするのもありだと思います。
尚、アセンブリを分けてないEditorディレクトリに配置していればこのエラーは発生しないようですので、asmdefが切られている配下のEditorディレクトリでのエラーが本記事の対象となります。(例えばUnityAssetStoreで購入したasmdefを使っているアセットだとこのエラーが発生しやすい傾向にあります。)
#if UNITY_EDITOR
public class MyScriptEditor: Editor {
... your custom editor code here ...
}
#endif
ただし、以下の事例のように数百ファイルでこのようなエラーが発生する場合には全ファイルを書き換える訳には行きませんよね?
このような事例に対応する方法を調べたのでFinalIKの場合を例に対処方法を共有させていただきます。
前提としてFinalIKでは RootMotion
ディレクトリにFinalIK.asmdefファイルが配置されています。
対処方法
方法1 asmdefファイルをEditorディレクトリに配置する
Editorディレクトリ内にasmdefを配置して親のasmdefを参照させPlatformを Editor
のみにチェックを入れる。
FinalIKの場合のみの注意事項
RootMotion/ImportAssemblyDefinitionsを実行することでasmdefを自動で作成できますが、何故かFinalIK.asmdefとコンフリクトするRootMotion.asmdefを生成してしまうので注意が必要です。
方法2 Assets/Editorディレクトリにファイルを移動する
親のasmdefの影響から除外するため Assets/Editor
に移動する
最後に
方法2ではシンプルな対処方法になりますが、プロジェクトのディレクトリ構成が大きく変わってしまうのがデメリットになります。ある程度規模のプロジェクトだと方法1がおすすめです。
関連公式フォーラム
以上