Version: 2018.4
UQuery
USS セレクター

スタイルと Unity スタイルシート

VisualElement にはスタイルのプロパティーが含まれており、backgroundColorborderColor など、要素の寸法と要素が画面上でどのように描画されるかを設定します。

スタイルのプロパティーは、C# かスタイルシートで設定します。スタイルプロパティーは、独自のデータ構造 (IStyle インターフェース) で再グループ化されます。

UIElements は USS (Unity スタイルシート) で書かれたスタイルシートをサポートします。USS ファイルは、HTML のカスケーディングスタイルシート (Cascading Style Sheets、CSS) からヒントを得たテキストファイルです。USS 形式は CSS に似ていますが、USS は Unity でうまく動作するためのオーバーライドとカスタマイズが含まれています。

ここでは、USS とその構文、CSS と比較した違いの詳細を説明しています。

Unity スタイルシートの定義

Unity スタイルシート (USS) の基本的な事項は以下の通りです。

  • USS はアセットとして認識されるテキストファイルです。テキストファイルには .uss 拡張子が必要です。
  • USS はスタイルのルールのみをサポートします。
  • スタイルのルールはセレクターと宣言ブロックで構成されます。
  • セレクターは、どの視覚要素がスタイルのルールに影響するかを識別します。
  • 中括弧 {} で囲まれた宣言ブロックには、1 つ以上のスタイル宣言が含まれます。各スタイル宣言は、プロパティーと値で構成されます。各スタイル宣言はセミコロンで終わります。
  • 各スタイルプロパティーの値はリテラルであり、パースされるときに、ターゲットプロパティー名と一致する必要があります。

スタイルルールの一般的な構文は下のとおりです。

selector {
  property1:value;
  property2:value;
}

USS 構文は CSS3 の W3C 仕様にマッチします。UIElements は ExCSS オープンソースパーサー を使用して USS 宣言をパースします。ExCSS オープンソースパーサーには、独自のテストスイートがあります。

USS を視覚要素に設定

Unityスタイルシート (USS) を視覚要素に設定できます。スタイルルールは、視覚要素とすべての子孫要素に適用されます。スタイルシートは必要に応じて自動的に再適用されます。

AddStyleSheetPath() メソッドを使用して USS を視覚要素に関連付けます。また、 AddStyleSheetPath() メソッドに含まれているフォルダーへの相対パスを示す必要があります。Unity が USS ファイルを認識するためには、ファイルを Assets フォルダー内の Resources フォルダーか Editor Default Resources フォルダーに置く必要があります。

EditorWindow の実行中に USS ファイルを変更すると、スタイルの変更は即座に適用されます。

ルールと一致するスタイル

スタイルシートが定義されると、それを視覚要素の UIElements ツリーに適用することができます。

この処理の間、USS ファイルから適用されるプロパティーを解決するためにセレクターは要素と照合されます。セレクターが要素に適合すると、要素にスタイル宣言が適用されます。

例えば、以下のルールはすべての Button オブジェクトに適合します。

Button {
  width: 200px;
}

スタイルシートを VisualElement.AddStyleSheetPath() メソッドを使ってサブツリーにアタッチします。

VisualElement マッチング

UIElement は次の条件を使用して、視覚要素をそのスタイルルールと照合します。

  • その C# クラス名 (常にもっとも派生したクラス)
  • name プロパティー (文字列)
  • クラスリスト (一揃いの文字列)
  • ビジュアルツリー内の VisualElement の祖先と位置

これらの特性は、スタイルシートのセレクターで使用されます。

CSS を使い慣れているユーザーには、HTML タグ名、id 属性、class 属性と似ていることがお判りでしょう。


UQuery
USS セレクター