【Cubism SDKのバージョン】CubismSdkForUnity-4-r.4
【OS名・バージョン】(Windows11)
【開発使用ツール】(Unity6000.0.50f1, VisualStudio2022)
お世話になっております。
UnityEditorのProjectタブからcsファイルをダブルクリック、
またはコンソールのエラーを開く際などに問題が発生します。
そのためVisualStudioが読み込みを待つのでソリューションのcsprojが多いほど開くのに時間が掛かります。(自分のプロジェクトだと5秒以上)
Unityを6000系にアップデートしたところ上記問題が発生したため原因を調査しましたが
Unity公式パッケージのVisual Studio Editorの特定バージョンとの組み合わせで発生する事がわかりました。
条件としてはVisual Studio Editorパッケージ(2.0.15)以降を使うと問題が発生します。
私が検証に使用したバージョンは2.0.23となります。
UnityEditorのバージョンは直接は関係ないですが、Unity6000.0.5では
Visual Studio Editorパッケージを2.0.23から何故かダウングレード出来ないので回避不可です。
発生原因としましてはVisual Studio Editorパッケージがcsファイルを開くたびに全ての.csprojのチェックをするのですが
その文字列が.csprojファイルとVisual Studio Editorパッケージが生成したテキストを比較して差があれば書き換えるのですが、
SyncFileIfNotChanged()
の第二引数で渡されるnewContentsの末尾に空行がありそのまま書き込まれてしまいます。
その後UnityEditorがプロジェクト更新のコールバックを発火しますが
CubismAssetProcessor.OnGeneratedCSProjectFiles()
の中で呼び出されているAllowUnsafeCode()
がすべての.csprojに対して
XDocumentを使ったデシリアライズを行うため先の空行が消えてしまうため、毎回.csprojの更新がかかることになります。
気になったのはGithubでCubismUnityComponentsの最新のコードを確認したところ
当該処理は#if !UNITY_2017_3_OR_NEWER
で括られており特定Unityバージョン以上は除外されているようです。
ただこの処置はCubism 5-r3からのようで現在利用している4-r4には無い処理になっています。
ここで質問なのですが
現在利用している4-r4で同じようにこの処理を#if !UNITY_2017_3_OR_NEWER
で括ってしまうのは問題無いでしょうか?
私にはこれが必要な処理なのか判別できないためご確認した次第です。
同じように括ったところ.csprojの再生成は行われなくなりました。
いちおうSDKを最新の5-r4などへのアップグレード自体を検討すべきかと思いますが
すでにリリース済みのタイトルのため、できれば現在の4-r4のままにしたいと考えております。