Could not locate VRChat data directory for exception watcher. というエラーの対処法


初めまして、Mouleです。自分用メモとしてQitaはじめます。
VRChatのワールド制作をしていたら、Unityにて、「Could not locate VRChat data directory for exception watcher」とかいうエラーがマイフレームコンソールに出続けるようになってしまったのでそれについての記事です。
詳細は記事の後半に書きます。
なおGitを使ってる方は解決策3をおすすめします。

解決策1

これは根本的な解決にはならないので根本的に解決したい方は解決策2か3を使ってください。

エラーログを出している該当箇所、UdonSharpRuntimeLogWathcer.csの75行目

Debug.LogError("[UdonSharp] Could not locate VRChat data directory for exception watcher");

を、コメントアウトしてください。(コメントアウトって何って方は、上の行を削除して代わりに下のコードを貼り付けてください。)

//Debug.LogError("[UdonSharp] Could not locate VRChat data directory for exception watcher");

これで、エラーを無視するようになります()

解決策2

プロジェクトを新しく作り直して、必要なものを全部移行しましょう。
めんどくさいので、可能なら解決策3を使いましょう。
またGitがわからないという方はこちらの記事をおすすめします。
【Git】【Unity】VRChatterのためのGit入門

解決策3

クローンし直しましょう。
(詳細にも書きますが、自分も原因を完全に理解しているわけではないので、治らなかったらすみません。)

詳細

この部分は、新しいことがわかり次第更新される予定です。

環境

  • MacBook Pro (15-inch, 2019)
  • Unity2018.4.20f1
  • VRCSDK 2021.5.21.12.23
  • UdonSharp v0.19.11

エラーが出るようになったきっかけ

デバッグのためにEditorでシーンを再生し、処理が重かったのかUnityがフリーズしてしまったので、Unityを強制的に落としたところこのエラーが出るようになりました。
余談ですが、Unityって結構シーン再生中に落としたりするとやばいエラーが発生することが多いです。
Gitで前後の状態を確認しても特に変更はないので、Editorとかのレベルで何かが変わってしまうみたいです。
つまり普段Gitで管理してる部分には何も異常がないので、クローンしなおせば大方治ります。(諸説あります)

エラーの内容と検証

Could not locate VRChat data directory for exception watcher.
何かのディレクトリが無いって怒ってますね。
ログエラー周りのコードを見てみます。
```

        if (logDirectoryWatcher == null && ShouldListenForVRC())
        {
            AssemblyReloadEvents.beforeAssemblyReload += CleanupLogWatcher;
            // Now setup the filesystem watcher
            string[] splitPath = Application.persistentDataPath.Split('/', '\\');
            string VRCDataPath = string.Join("\\", splitPath.Take(splitPath.Length - 2)) + "\\VRChat\\VRChat";
            if (Directory.Exists(VRCDataPath))
            {
                logDirectoryWatcher = new FileSystemWatcher(VRCDataPath, "output_log_*.txt");
                logDirectoryWatcher.IncludeSubdirectories = false;
                logDirectoryWatcher.NotifyFilter = NotifyFilters.LastWrite;
                logDirectoryWatcher.Changed += OnLogFileChanged;
                logDirectoryWatcher.InternalBufferSize = 1024;
                logDirectoryWatcher.EnableRaisingEvents = false;
            }
            else
            {
                //Debug.LogError("[UdonSharp] Could not locate VRChat data directory for exception watcher");
            }
        }

なにやら、VRCDataPathとやらにあるディレクトリを探してますね。
試しにこれを出力したら以下のパスが見れました。

\Users[ユーザー名]\Library\Application Support\VRChat\VRChat

なので、その通りのパスのディレクトリを作ってみたのですが、エラーは変わらず表示され続けました。

わっかんね

わかんなかったのと、別にエラーのままでいっかなって思ったのでコメントアウトしました、本当にすみません。
Gitで差分を見ても特に異常はなく、過去のコミットに戻ってもエラーは出続けてたので、クローンしなおせば流石に治ると思います(気が向いたら試します)

あとがき

このエラー文でググっても何も情報が出てこなかったので、将来の自分のために何もわからないまま記事を書きました。
わかる方がいたらぜひ教えてください。
情報が増えたら都度追記します。
読んで頂きありがとうございました。