커스텀 프로퍼티라고도 부르는 USS 변수는 다른 USS 규칙에서 재사용할 수 있는 값을 정의합니다. 모든 타입의 USS 프로퍼티에 대한 변수를 만들 수 있습니다.
USS 변수를 생성하려면 해당 이름 앞에 더블하이픈(--
)을 붙이십시오.
--color-1: red;
다른 USS 규칙에서 USS 변수 값을 사용하려면 var()
함수를 사용하여 호출하십시오.
var(--color-1);
참고: |
---|
var() 함수는 선택적 기본값도 허용합니다(아래의 기본값 지정 참조). |
변수를 정의한 후에는 많은 다른 USS 프로퍼티에서 사용할 수 있습니다. 업데이트하면 이 변수를 사용하는 모든 USS 프로퍼티도 함께 업데이트됩니다.
예를 들어 다음 USS 스니핏은 두 개의 컬러 변수를 선언하는 하나의 스타일 규칙과 이러한 변수를 사용하는 두 개의 스타일 규칙을 정의합니다.
:root {
--color-1: blue;
--color-2: yellow;
}
.paragraph-regular {
color: var(--color-1);
background: var(--color-2);
padding: 2px;
}
.paragraph-reverse {
color: var(--color-2);
background: var(--color-1);
padding: 2px;
}
컬러 체계를 업데이트하려면 네 개의 컬러 값이 아니라 두 개의 변수 값만 변경하면 됩니다.
변수를 사용하면 여러 규칙(때로는 다른 스타일시트에 있음)이 동일한 값을 사용하는 복잡한 UI의 스타일을 보다 쉽게 관리할 수 있습니다.
var()
함수는 선택적 기본값을 허용합니다. UI 시스템은 변수를 확인할 수 없을 때 기본값을 사용합니다. 스타일시트에서 변수를 제거했지만, 해당 레퍼런스를 제거하는 것을 잊은 경우를 예로 들 수 있습니다.
변수에 대한 기본값을 지정하려면 변수 값 뒤에 쉼표(,
)로 구분하여 추가하십시오. 다음 USS 스니핏은 --color-1
변수를 호출하지만, UI 시스템이 이를 확인하지 못하면 빨간색(#FF0000
)에 16진수 값을 사용합니다.
var(--color-1, #FF0000);
USS에서 변수는 CSS에서와 거의 동일한 방식으로 작동합니다. CSS 변수에 대한 자세한 내용은 MDN 문서를 참조하십시오.
이해해야 할 몇 가지 사소한 차이점이 있습니다.
일부 웹 브라우저는 아래의 프로퍼티 선언처럼 다른 함수 내에서 var()
함수 사용을 지원합니다.
background-color: rgb(var(--red), 0, 0);
Unity는 이러한 var()
사용을 지원하지 않습니다.
일반적인 CSS 관행은 :root
유사 클래스 선택자에서 “전역” 변수를 선언하는 것입니다. 웹 페이지의 모든 요소가 :root
에서 상속되므로 CSS 스타일시트의 모든 선택자는 그곳에서 선언된 변수를 호출할 수 있습니다.
Unity에서 :root
에서의 변수 선언은 에디터 창과 런타임 패널에서 작동합니다. 단, 스타일시트를 패널 또는 에디터 창의 루트 VisualElement에 연결해야 합니다. 인스펙터 UI에서는 작동하지 않습니다.
인스펙터에서 :root
유사 클래스는 인스펙터 창의 루트 VisualElement에서만 활성화됩니다. 스타일시트를 연결하는 하위 트리는 인스펙터 계층 구조에서 훨씬 아래에 있습니다. 따라서 :root
선택자는 하위 트리의 어떠한 부분과도 매칭되지 않습니다.
커스텀 인스펙터에서 :root
선택자 대신 USS 클래스 선택자를 사용할 수 있습니다. 변수를 선언할 USS 클래스를 생성한 후 액세스할 수 있는 계층 구조 내 최상위 요소에 적용하십시오.
예를 들어 다음 USS 스니핏은 다음 클래스를 정의합니다.
.root
는 변수를 선언합니다..label1
은 변수를 호출합니다..root {
--color1: rgb(25, 255, 75);
}
.label1 {
color: var(--color1);
}
다음 UXML 스니핏은 단순한 컨테이너 요소를 생성한 후 루트 클래스를 할당합니다. 컨테이너에는 label1
클래스가 할당된 자식 요소인 Label이 있습니다.
UXML에서 다음과 같습니다.
<UXML xmlns="UnityEngine.UIElements">
<VisualElement class="root">
<!-- Including, for example... -->
<Label class="label1" text="Label text"/>
</VisualElement>
</UXML>
Label은 컨테이너에서 상속되므로 해당 스타일은 컨테이너의 스타일에서 정의된 모든 변수를 호출할 수 있습니다.
Did you find this page useful? Please give it a rating:
Thanks for rating this page!
What kind of problem would you like to report?
Thanks for letting us know! This page has been marked for review based on your feedback.
If you have time, you can provide more information to help us fix the problem faster.
Provide more information
You've told us this page needs code samples. If you'd like to help us further, you could provide a code sample, or tell us about what kind of code sample you'd like to see:
You've told us there are code samples on this page which don't work. If you know how to fix it, or have something better we could use instead, please let us know:
You've told us there is information missing from this page. Please tell us more about what's missing:
You've told us there is incorrect information on this page. If you know what we should change to make it correct, please tell us:
You've told us this page has unclear or confusing information. Please tell us more about what you found unclear or confusing, or let us know how we could make it clearer:
You've told us there is a spelling or grammar error on this page. Please tell us what's wrong:
You've told us this page has a problem. Please tell us more about what's wrong:
Thank you for helping to make the Unity documentation better!
Your feedback has been submitted as a ticket for our documentation team to review.
We are not able to reply to every ticket submitted.