Open harumas opened 3 years ago
疑問ありがとうございます。
Unity Editor起動時なのかどうかを判別するAPIをUnity Technologiesが提供していない(少なくとも私は知りません)ために生じるエラーですね。 Editor起動時であるかどうかさえわかればこのエラーは回避できますが、ご存知でしょうか?
調べてみたところ、確かにUnity Editor起動時を直接判別する方法はありませんでした。
[InitializeOnLoad]
属性はありますが、それだとコードのコンパイル時にも実行されてしまいます。
なので、ScriptableSingleton
を使って回数(またはbool)を記録しておくことで、初回起動を判別できるようです。
//サンプルコード
using UnityEditor;
using UnityEngine;
[InitializeOnLoad]
public static class Startup {
class StartUpData : ScriptableSingleton<StartUpData> {
int callCount;
public bool IsStartUp() => callCount++ == 0;
}
static Startup() {
if (!StartUpData.instance.IsStartUp()) return;
Debug.Log("Editor Initialized");
}
}
お役に立てたら幸いです!
Unity内に外部アセンブリが存在する際に、エディタの初期化時に毎回AssemblyResolutionExceptionが発生します。
エラー文
今回の場合、DOTweenというアセットのアセンブリが解決できていませんが、Photonなど外部のアセンブリであれば同様のエラーが発生します。 また、メニューのManagedPluginSettingsからチェックボックスを外してもエラーは治りませんでした。
なにか解決策に繋がりそうな情報がありましたら教えていただきたいです!