Unity Plus

43,995円 /月



Unity Pro


198,000円 /月

Unity認定資格

Unity学習
基本英語です

50%OFFセール中だ!!

セール終了まで

{{timeleftshow}}


今日だけのセール:70%OFF
{{todaysaleleft}}

asmdefファイルをEditor以下に自動追加するエディタ拡張

追記:2020/05/02

githubにリポジトリ作ったのでパッケージマネージャからもインポートできます。

上のアドレスをpackageManagerから入力するだけです。

unity2018.4くらいじゃないと対応してないかもしれません。

その場合はmanifest.jsonを直接書き換えるか、下のソースコードをそのままコピーしてください。


AssemblyDifination何かと便利です。

コンパイル早くなったりするし。プロジェクト大きくなるほど効果があると思います。

ただ、Editorフォルダがあるアセットとかだとすごく面倒なことになります。Editorフォルダに別にasmdefファイルを置かないといけないからです。

Editorフォルダが10個あったりしたら10個作らないといけないはずです。大変な作業になります。

で、面倒だったので何とかエディタ拡張をしてみました。

自動でasmdefファイルを作って、PlatformをEditorのみにしたりするようになってます。

試しにコーギーエンジンに使ってみたら、それなりにうまくいきました。Editorフォルダ内のスクリプトが別のEditorフォルダを参照していたら、それは追加してあげないとむりです。

アセットによっては、最初からasmdefファイルを作ってくれている親切なデベロッパーの方もいます。

一応やる前にバックアップくらいとっておいたほうがいいかもしんないす。

使ったUnityバージョンは2019.3です。

2020年8月現在、CorgiEngineはAsmdefファイルが作ってあります。

Menu➡WIndow➡CreateAsemdefから開けます

AssemblyDefinationで区切ったファイルからAssembly.CSharpへの参照は出来ないってことを覚えておかないと、はまることがあると思います。

2019/07/06改良しました。

  • Editorフォルダ以下でcsファイルがなければasmdefを作成しません。

2019/12/26改良しました。

  • Editorフォルダの時、[csファイルが無い、且つ、Dllファイルがある時]だけasmdefファイルを作成しません。csファイルがなくてもフォルダがあるかもしれないので、一応作成する。
  • 参照を入れるときの処理を変更しました。

2020/05/02改良しました。

  • githubにリポジトリ作りました。UnityのPackageManagerからインポートできます。

2020/07/16改良しました。

  • Macだと動かない不具合を修正。パスの区切り文字が違うことが原因だった。

2020/09/04修正しました。

  • ルートフォルダのasmdefファイルへのGuidが見つからない不具合。AssetDataBaseRefresh()を呼ぶようにしたら直った気がする。

困ったこと

internalで修飾してあるクラスなんかがあると動かなくなる場合があります。同じアセンブリ内にアクセスを制限する修飾です。

Type.GetType()という文字列から型を取得するメソッドがあり、アセンブリ名を使うことがあります。

Doozyのグラフエディタで発生したんですが、ノードを繋ぐ時にGetTypeで型を調べているみたいです。

その時にアセンブリ名を参照する文字列を使っています。

こんな感じの。

で、「一度ノードを作った後」に「asmdefファイルを作成してしまう」と、アセンブリ名(上の例でいえば"Doozy.asmdef")が変わってしまうため、ノードを繋ぐ時に型を取得できなくなりエラーになります。

グラフエディタを使う前にasmdefファイルを作っておけば、とりあえずは大丈夫だと思います。

もうすでにノードを作っていたら、どうすればよいのか分かりませんでした。


コメント

  1. sam より:

    便利そうなツールをありがとうございます!!
    試しましたが、macだと動かないようです・・・・・・
    File couldn't be read

    An infinite import loop has been detected. The following Assets were imported multiple times, but no changes to them have been detected. Please check if any custom code is trying to import them:
    Assets/XWeaponTrail\XWeaponTrail.asmdef
    Assets/XWeaponTrail/Editor\XWeaponTrailEditor3554.asmdef

    等でエラーになりました。
    スクショはこちらです。
    https://imgur.com/a/mj90W2I

    • げんとめ(管理人) より:

      ご指摘どうもです!
      多分ですけど、ファイルパスの区切り文字がWindowsとMacで違うことが原因だったんじゃないかと推測します。
      私がMacを持っていないので確認できないんですが、一応は修正しました。
      必要であれば試してみてください。