なえ箱

メモを植えます

【Unity】コンパイルされる度にScripting Define Symbolsが全部消える

この記事をシェアする

Unity2021.3.17を使用中に、Player SettingsからScripting Define Symbolsを変更してApplyしたところ、

その後のスクリプトコンパイル後、Scripting Define Symbolsの設定がすべて消えてしまった。

再度Scripting Define Symbolsを設定したが、毎回コンパイルが走るとScripting Define Symbolsの設定がすべて消えてしまう。

全部消された

マジで意味わからんので調べたり試したりした事をメモ。

下にとりあえずの解決方法と、根本的な対策方法をメモしておくので、誰かの助けになれば。

Unityの不具合っぽい

似たような現象がUnityのISSUE TRACKERに上がってた。

issuetracker.unity3d.com

SCRIPTING DEFINE SYMBOLS ARE DELETED AFTER APPLYING CHANGES WHEN EXTERNAL SCRIPT EDITOR IS SET TO "OPEN BY FILE EXTENSION"

Preferences > External Tools > External Script Editor を "OPEN BY FILE EXTENSION" に設定しているときに、って書いてあるけど、

自分のはUnityHubからインストールしたVisual Studio 2019が割り当てられてるのにこの症状が起きてるので、もしかしたらここ関係ないのかも。

2021.3は直ってない

UNKNOWN(hidden)って…

Unity2021.3、UNKNOWN(hidden)扱いなってるのでもしかして直ってない…???

と思ったので、2021.3系のリリースノート2021.3.28まで見てみましたが、

修正一切書いてないので直ってなさそうです。

とりあえずの解決方法

Scripting Define SymbolsをPlayer Settingsから設定せず、

エディタ拡張で設定している方なら、以下の方法で解決?しつつ騙し騙し使えます

いつもPlayer Settingsから設定している方は、ひとまずこれで直るはずですが、

次回以降Define Symbolsを適用する時に、常にこれが再発するリスクに怯えながら適用しなければいけません。つらすぎる。

1.プロジェクトを閉じて意図的にエラーを起こす

一度プロジェクトを閉じて適当なソースをいじり、エラーが発生するようにして、

UnityプロジェクトがSafe Modeで立ち上がるようにしてください。

(エラーが既に出ているならプロジェクトを閉じるだけでOK)

2.Safe Modeで起動して修正、再適用

立ち上がったら、先ほど意図的に起こしたエラー箇所を修正して、

Scripting Define Symbolsを再度設定してApplyしてください。

自分はこの方法で直りました。

同様の現象が起きた場合は、今の手順で騙し騙し使うこともできそうです。

根本的な対策方法

根本的な対策方法ですが、最新2021.3.28現在、Unity2021.3についてはこの不具合は常に付きまといます

その為、現状できる根本的な対策は

  • Unity2022.1.15以上にする

  • ProjectSettings.assetにDefine Symbolsを直で記述

これしかなさそうです。

ProjectSettings.assetに直書きとか、

Asset Serialization設定がForce BinaryかMixedの人はまず出来ないので、

この症状が発生した2021.3を使用中の人は、騙し騙し使わないなら諦めて2022.1.15以上に上げるしかないです。

2021.3から2022.3は結構飛んじゃうので、最新のLTSにアップデートをする場合にはよく調べてアップデートを……