UnityのファイルはGUIDで管理されているためUnity内でファイル移動、またはファイルのリネームをしても参照が外れず安心ですがUI Toolkitは例外です。
USSファイルは文字列指定
<ui:UXML xmlns:ui="UnityEngine.UIElements" engine="UnityEngine.UIElements" editor-extension-mode="False">
<!-- 参照USSを文字列指定 -->
<Style src="/Assets/_Sample/Uss/Common.uss" />
<ScreenA name="ScreenA" class="screen">
<ui:VisualElement name="bg-a" class="screen">
<ui:Label text="Screen A" display-tooltip-when-elided="True" name="A" class="screen-label" />
</ui:VisualElement>
</ScreenA>
</ui:UXML>
上記の例ではSample.uxmlがCommon.uss
を参照しているのですが、<Style src="/Assets/_Sample/Uss/Common.uss" />
といったように文字列で入力することになります。
UXMLはUnityにインポートする時、内部的にはScriptableObjectに変換されますが、ただのテキストファイルです。
USSへの参照は文字列指定になります。
USSのパスが変更されるとどうなるのか?
単純に参照が外れます。
Unityが気を利かせてUSSの参照を追っかけてパスを修正してくれるわけではありません。
ではどうするか?
「USSのパスが変わらないように事前に設計する」

-
Uss/Common.uss
各UXMLで必ず使用する共通USS -
Uss/各UXML名/Hoge.uss
各UXMLで使用する固有USS
USSファイル、UXMLファイル共に非エンジニアに近いクリエーターが作業することになります。1
その際、ファイルアイコンだけではUXMLとUSSの区別がしづらいため、ディレクトリを分けてしまうのが良いかと思っています。
もしくはScreenA_UXML
、CommonUSS
のように、UXML/USSを認識できるファイル名にするのも良いかもしれません。
※実戦投入してみないと何がベストプラクティスなのかはわからないため、あくまで想像の話です
まとめ
- 現状のUnityではUSSのファイル移動、リネームにはコストが掛かります
- 無駄な作業が発生しないようにUSSディレクトリ構成を予めFIXさせておきましょう
以上です。
-
もちろんUnityエンジニアも作業対象 ↩