Unity2022でシンボリックリンクを使用する
Unity2019では問題なかったが、2022でシンボリックリンクを使用すると警告が出るようになった
Directory Monitoring機能が関係している
Directory Monitoringはプロジェクト内の変更チェックを高速化する機能
この設定を有効にすると、すべてのプロジェクトファイルをスキャンする代わりにディレクトリを監視します。
Unityはプロジェクト内のファイルが増えるほど、変更をチェックする時間が長くなりますが、
そのチェック時間を高速(ほぼ0)にするDirectory Monitoringという機能があります。
(※Windows限定の機能)
Directory Monitoring is disabled when symbolic links are present because not doing so will create inconsistant behaviour internally.
Under certain circumstances directory monitoring results are skipped during refresh calls and a full filesystem scan is done. In this case changes in sym linked folders will be picked up as expected, however, under normal circumstances (using directoring monitor results) changes within sym links will not be picked up.
実際、下記の警告が出ている
Disabling directory monitoring for current editor session. Found symlinks in project which cannot be used with directory monitoring. Directory monitoring settings can be changed in preferences.
Directory Monitoringが使えないのはちょっと悲しいが、Unity2019と同じ状況だと思えば問題ない
それよりも問題なのは、警告が大量に出ることによって他の警告を見逃してしまうこと
CSXXXXの警告であればcsc.rspで抑制できる
下記の警告は抑制できない?
file/path.cs is a symbolic link. Using symlinks in Unity projects may cause your project to become corrupted if you create multiple references to the same asset, use recursive symlinks or use symlinks to share assets between projects used with different versions of Unity. Make sure you know what you are doing.
これが大量に出るので邪魔
Disabling directory monitoring for current editor session. Found symlinks in project which cannot be used with directory monitoring. Directory monitoring settings can be changed in preferences.
こっちは1つしか出ないのでまだマシ
下記のスクリプトでは対処できない
code: SuppressWarnings
using UnityEditor;
using UnityEngine;
public class SuppressWarnings
{
static SuppressWarnings()
{
Application.logMessageReceived += HandleLog;
}
static void HandleLog(string logString, string stackTrace, LogType type)
{
if (logString.Contains("symbolic link"))
{
return;
}
Debug.unityLogger.Log(type, logString);
}
}
たぶんイベントが登録される前に警告が出る
ライブラリのアセンブリに入れても同様
警告が出るのを許容するしかないか…?
シンボリックリンクを使っているのは外部ライブラリなので、あまり再コンパイルされない
だいたいUnity起動直後くらい
実装中に警告が邪魔になるタイミングは少ない
最終的な警告のチェックは、リリース時と同様の状態(シンボリックリンクを実体に変換した状態)で行う