Files
XRLib/Assets/Sample/UIToolkit/UTKStyleGuideSample.Input.cs

839 lines
26 KiB
C#
Raw Normal View History

2026-01-23 19:04:12 +09:00
#nullable enable
using System;
using System.Collections.Generic;
using Cysharp.Threading.Tasks;
using UnityEngine;
using UnityEngine.UIElements;
using UVC.UIToolkit;
/// <summary>
/// UTKStyleGuideSample의 Input 카테고리 Initialize 메서드들
/// </summary>
public partial class UTKStyleGuideSample
{
#region Input Initializers
private void InitializeInputFieldSample(VisualElement root)
{
SetCodeSamples(root,
csharpCode: @"// 기본 입력 필드
var input = new UTKInputField();
input.label = """"; // Unity TextField의 label 프로퍼티 (소문자)
input.Placeholder = "" "";
input.OnValueChanged += (value) => Debug.Log($"": {value}"");
// 비밀번호 입력 필드
var password = new UTKInputField();
password.label = """";
password.isPasswordField = true;
// 검증 오류 표시
input.ErrorMessage = "" ."";
input.ErrorMessage = """"; // 오류 제거
// 변형 스타일
input.Variant = UTKInputField.InputFieldVariant.Outlined;
// 이벤트
input.OnFocused += () => Debug.Log("""");
input.OnBlurred += () => Debug.Log("" "");
input.OnSubmit += (value) => Debug.Log($"": {value}"");
// 비활성화
input.IsEnabled = false;
// 읽기 전용
input.isReadOnly = true;
// 여러 줄 입력
input.multiline = true;",
uxmlCode: @"<!-- 네임스페이스 선언 -->
<ui:UXML xmlns:utk=""UVC.UIToolkit"">
<!-- -->
<utk:UTKInputField label="""" />
<!-- -->
<utk:UTKInputField label="""" placeholder=""example@email.com"" />
<!-- -->
<utk:UTKInputField label="""" is-password-field=""true"" />
<!-- -->
<utk:UTKInputField label="""" multiline=""true"" />
<!-- -->
<utk:UTKInputField label="""" is-enabled=""false"" value="" "" />
</ui:UXML>");
}
private void InitializeIntegerFieldSample(VisualElement root)
{
SetCodeSamples(root,
csharpCode: @"// 기본 정수 필드
var intField = new UTKIntegerField("""");
intField.Value = 25;
intField.OnValueChanged += (value) => Debug.Log($"": {value}"");
// 범위 제한 (이벤트로 처리)
intField.OnValueChanged += (value) =>
{
if (value < 0) intField.Value = 0;
if (value > 150) intField.Value = 150;
};
// 비활성화
intField.IsEnabled = false;",
uxmlCode: @"<!-- 네임스페이스 선언 -->
<ui:UXML xmlns:utk=""UVC.UIToolkit"">
<!-- -->
<utk:UTKIntegerField label="""" />
<!-- -->
<utk:UTKIntegerField label="""" value=""100"" />
<!-- -->
<utk:UTKIntegerField label="""" is-enabled=""false"" value=""50"" />
</ui:UXML>");
}
private void InitializeLongFieldSample(VisualElement root)
{
SetCodeSamples(root,
csharpCode: @"// 기본 Long 필드
var longField = new UTKLongField("" "");
longField.Value = 1073741824; // 1GB
longField.OnValueChanged += (value) => Debug.Log($"": {value} bytes"");
// 비활성화
longField.IsEnabled = false;",
uxmlCode: @"<!-- 네임스페이스 선언 -->
<ui:UXML xmlns:utk=""UVC.UIToolkit"">
<!-- Long -->
<utk:UTKLongField label="" "" />
<!-- -->
<utk:UTKLongField label="" "" value=""9223372036854775807"" />
<!-- -->
<utk:UTKLongField label="""" is-enabled=""false"" />
</ui:UXML>");
}
private void InitializeFloatFieldSample(VisualElement root)
{
SetCodeSamples(root,
csharpCode: @"// 기본 Float 필드
var floatField = new UTKFloatField("""");
floatField.Value = 9.8f;
floatField.OnValueChanged += (value) => Debug.Log($"": {value}"");
// 범위 제한 (이벤트로 처리)
floatField.OnValueChanged += (value) =>
{
if (value < 0f) floatField.Value = 0f;
if (value > 100f) floatField.Value = 100f;
};
// 비활성화
floatField.IsEnabled = false;",
uxmlCode: @"<!-- 네임스페이스 선언 -->
<ui:UXML xmlns:utk=""UVC.UIToolkit"">
<!-- Float -->
<utk:UTKFloatField label="""" />
<!-- -->
<utk:UTKFloatField label="""" value=""9.8"" />
<!-- -->
<utk:UTKFloatField label="""" is-enabled=""false"" value=""3.14"" />
</ui:UXML>");
}
private void InitializeDoubleFieldSample(VisualElement root)
{
SetCodeSamples(root,
csharpCode: @"// 기본 Double 필드
var doubleField = new UTKDoubleField("""");
doubleField.Value = 3.141592653589793;
doubleField.OnValueChanged += (value) => Debug.Log($"": {value}"");
// 비활성화
doubleField.IsEnabled = false;",
uxmlCode: @"<!-- 네임스페이스 선언 -->
<ui:UXML xmlns:utk=""UVC.UIToolkit"">
<!-- Double -->
<utk:UTKDoubleField label="""" />
<!-- -->
<utk:UTKDoubleField label="""" value=""3.141592653589793"" />
<!-- -->
<utk:UTKDoubleField label="""" is-enabled=""false"" />
</ui:UXML>");
}
2026-01-23 19:04:12 +09:00
private void InitializeNumberStepperSample(VisualElement root)
{
var disabledRow = root.Q<VisualElement>("stepper-disabled-row");
if (disabledRow != null)
{
var stepper = new UTKNumberStepper(0, 100, 30, 1);
stepper.style.width = 150;
stepper.SetEnabled(false);
disabledRow.Add(stepper);
}
SetCodeSamples(root,
csharpCode: @"// 기본 사용법
var stepper = new UTKNumberStepper(minValue: 0, maxValue: 100, value: 50, step: 1);
stepper.OnValueChanged += (newValue) => Debug.Log($""Value: {newValue}"");
// Step 설정
var stepper5 = new UTKNumberStepper(0, 100, 25, 5); // Step 5씩 증감
// Wrap Around (최소/최대값에서 순환)
var wrapStepper = new UTKNumberStepper(0, 100, 0, 10);
wrapStepper.WrapAround = true; // 0 -> -10 시 100으로 순환
// 비활성화
var disabledStepper = new UTKNumberStepper(0, 100, 30, 1);
disabledStepper.SetEnabled(false);
// 속성 변경
stepper.Value = 75;
stepper.MinValue = 10;
stepper.MaxValue = 90;
stepper.Step = 2;",
uxmlCode: @"<!-- 네임스페이스 선언 -->
<ui:UXML xmlns:utk=""UVC.UIToolkit"">
<!-- Step 1 -->
<utk:UTKNumberStepper min-value=""0"" max-value=""100"" value=""50"" step=""1"" />
<!-- Step 5 -->
<utk:UTKNumberStepper min-value=""0"" max-value=""100"" value=""25"" step=""5"" />
<!-- Wrap Around -->
<utk:UTKNumberStepper min-value=""0"" max-value=""100"" value=""0"" step=""10"" wrap-around=""true"" />
<!-- -->
<utk:UTKNumberStepper min-value=""0"" max-value=""100"" value=""30"" step=""1"" is-enabled=""false"" />
<!-- -->
<utk:UTKNumberStepper class=""custom-stepper"" style=""width: 150px;"" />
</ui:UXML>");
}
private void InitializeVector2FieldSample(VisualElement root)
{
var field = root.Q<UTKVector2Field>("vec2-position");
if (field != null)
{
field.Value = new Vector2(100, 200);
}
SetCodeSamples(root,
csharpCode: @"// 기본 사용법
var positionField = new UTKVector2Field(""Position"");
positionField.Value = new Vector2(100, 200);
positionField.OnValueChanged += (newValue) => Debug.Log($""Position: {newValue}"");
// 라벨 없이
var field = new UTKVector2Field();
field.label = """";
2026-01-23 19:04:12 +09:00
// 읽기 전용
var readOnlyField = new UTKVector2Field(""ReadOnly"");
readOnlyField.SetEnabled(false);",
uxmlCode: @"<!-- 네임스페이스 선언 -->
<ui:UXML xmlns:utk=""UVC.UIToolkit"">
<!-- -->
<utk:UTKVector2Field label=""Position"" />
<!-- -->
<utk:UTKVector2Field />
<!-- -->
<utk:UTKVector2Field label=""ReadOnly"" is-enabled=""false"" />
</ui:UXML>");
}
private void InitializeVector3FieldSample(VisualElement root)
{
var field = root.Q<UTKVector3Field>("vec3-position");
if (field != null)
{
field.Value = new Vector3(10, 20, 30);
}
SetCodeSamples(root,
csharpCode: @"// 기본 사용법
var positionField = new UTKVector3Field(""Position"");
positionField.Value = new Vector3(10, 20, 30);
positionField.OnValueChanged += (newValue) => Debug.Log($""Position: {newValue}"");
// 회전 벡터
var rotationField = new UTKVector3Field(""Rotation"");
rotationField.Value = new Vector3(0, 90, 0);
// 비활성화
var disabledField = new UTKVector3Field(""Disabled"");
disabledField.SetEnabled(false);",
uxmlCode: @"<!-- 네임스페이스 선언 -->
<ui:UXML xmlns:utk=""UVC.UIToolkit"">
<!-- -->
<utk:UTKVector3Field label=""Position"" />
<!-- -->
<utk:UTKVector3Field />
<!-- -->
<utk:UTKVector3Field label=""Disabled"" is-enabled=""false"" />
</ui:UXML>");
}
private void InitializeVector4FieldSample(VisualElement root)
{
var field = root.Q<UTKVector4Field>("vec4-color");
if (field != null)
{
field.Value = new Vector4(1, 0.5f, 0.25f, 1);
}
SetCodeSamples(root,
csharpCode: @"// 기본 사용법
var colorField = new UTKVector4Field(""Color"");
colorField.Value = new Vector4(1, 0.5f, 0.25f, 1); // RGBA
colorField.OnValueChanged += (newValue) => Debug.Log($""Color: {newValue}"");
// 쿼터니언 값
var quaternionField = new UTKVector4Field(""Quaternion"");
var quat = Quaternion.identity;
quaternionField.Value = new Vector4(quat.x, quat.y, quat.z, quat.w);
// 비활성화
var disabledField = new UTKVector4Field(""Disabled"");
disabledField.SetEnabled(false);",
uxmlCode: @"<!-- 네임스페이스 선언 -->
<ui:UXML xmlns:utk=""UVC.UIToolkit"">
<!-- -->
<utk:UTKVector4Field label=""Color"" />
<!-- -->
<utk:UTKVector4Field />
<!-- -->
<utk:UTKVector4Field label=""Disabled"" is-enabled=""false"" />
</ui:UXML>");
}
private void InitializeRectFieldSample(VisualElement root)
{
var field = root.Q<UTKRectField>("rect-area");
if (field != null)
{
field.Value = new Rect(10, 20, 100, 50);
}
SetCodeSamples(root,
csharpCode: @"// 기본 사용법
var areaField = new UTKRectField(""Area"");
areaField.Value = new Rect(10, 20, 100, 50); // x, y, width, height
areaField.OnValueChanged += (newValue) => Debug.Log($""Rect: {newValue}"");
// 화면 영역 설정
var screenArea = new UTKRectField(""Screen Area"");
screenArea.Value = new Rect(0, 0, Screen.width, Screen.height);
// 비활성화
var disabledField = new UTKRectField(""Disabled"");
disabledField.SetEnabled(false);",
uxmlCode: @"<!-- 네임스페이스 선언 -->
<ui:UXML xmlns:utk=""UVC.UIToolkit"">
<!-- -->
<utk:UTKRectField label=""Area"" />
<!-- -->
<utk:UTKRectField />
<!-- -->
<utk:UTKRectField label=""Disabled"" is-enabled=""false"" />
</ui:UXML>");
}
private void InitializeBoundsFieldSample(VisualElement root)
{
var field = root.Q<UTKBoundsField>("bounds-collision");
if (field != null)
{
field.Value = new Bounds(new Vector3(0, 1, 0), new Vector3(2, 2, 2));
}
SetCodeSamples(root,
csharpCode: @"// 기본 사용법
var boundsField = new UTKBoundsField(""Bounds"");
var center = new Vector3(0, 1, 0);
var size = new Vector3(2, 2, 2);
boundsField.Value = new Bounds(center, size);
boundsField.OnValueChanged += (newValue) => Debug.Log($""Bounds: {newValue}"");
// 콜라이더 범위 설정
var collisionField = new UTKBoundsField(""Collision Bounds"");
collisionField.Value = new Bounds(Vector3.zero, Vector3.one * 5);
// 비활성화
var disabledField = new UTKBoundsField(""Disabled"");
disabledField.SetEnabled(false);",
uxmlCode: @"<!-- 네임스페이스 선언 -->
<ui:UXML xmlns:utk=""UVC.UIToolkit"">
<!-- -->
<utk:UTKBoundsField label=""Bounds"" />
<!-- -->
<utk:UTKBoundsField />
<!-- -->
<utk:UTKBoundsField label=""Disabled"" is-enabled=""false"" />
</ui:UXML>");
}
#endregion
#region Dropdown Initializers
private void InitializeDropdownSample(VisualElement root)
{
var normalRow = root.Q<VisualElement>("dropdown-normal-row");
if (normalRow != null)
{
var dropdown = new UTKDropdown("Select Option");
dropdown.SetOptions(new List<string> { "Option 1", "Option 2", "Option 3", "Option 4" });
dropdown.SelectedIndex = 0;
normalRow.Add(dropdown);
}
var disabledRow = root.Q<VisualElement>("dropdown-disabled-row");
if (disabledRow != null)
{
var dropdown = new UTKDropdown("Disabled");
dropdown.SetOptions(new List<string> { "Option 1", "Option 2" });
dropdown.SelectedIndex = 0;
dropdown.IsEnabled = false;
disabledRow.Add(dropdown);
}
SetCodeSamples(root,
csharpCode: @"// 기본 사용법
var dropdown = new UTKDropdown(""Select Option"");
dropdown.SetOptions(new List<string> { ""Option 1"", ""Option 2"", ""Option 3"", ""Option 4"" });
dropdown.SelectedIndex = 0;
// 선택 이벤트 (인덱스와 값 모두 전달)
dropdown.OnSelectionChanged += (index, value) =>
2026-01-23 19:04:12 +09:00
{
Debug.Log($"": [{index}] {value}"");
2026-01-23 19:04:12 +09:00
};
// 생성자로 한 번에 설정
var sortDropdown = new UTKDropdown("""", new List<string> { """", """", """" });
2026-01-23 19:04:12 +09:00
// 선택된 값 가져오기
var selectedIndex = dropdown.SelectedIndex;
var selectedValue = dropdown.SelectedValue;
// 옵션 동적 변경
dropdown.SetOptions(new List<string> { ""New 1"", ""New 2"", ""New 3"" });
// 프로그램으로 선택 (인덱스로)
2026-01-23 19:04:12 +09:00
dropdown.SelectedIndex = 2;
// 프로그램으로 선택 (값으로)
dropdown.SetSelectedValue(""Option 2"");
// 이벤트 없이 값 변경 (초기화 시 유용)
sortDropdown.SetSelectedValue("""", notify: false);
// 동적으로 옵션 추가
dropdown.AddOption(""Option 5"");
2026-01-23 19:04:12 +09:00
// Disabled
var disabledDropdown = new UTKDropdown(""Disabled"");
disabledDropdown.SetOptions(new List<string> { ""Option 1"", ""Option 2"" });
disabledDropdown.SelectedIndex = 0;
disabledDropdown.IsEnabled = false;",
uxmlCode: @"<!-- 네임스페이스 선언 -->
<ui:UXML xmlns:utk=""UVC.UIToolkit"">
2026-01-23 19:04:12 +09:00
<!-- ( ) -->
<utk:UTKDropdown label="""" choices="",,"" />
2026-01-23 19:04:12 +09:00
<!-- (index로) -->
<utk:UTKDropdown label="""" choices="",English,"" index=""0"" />
<!-- -->
<utk:UTKDropdown label="""" choices="",,,"" placeholder="" "" />
<!-- -->
<utk:UTKDropdown label="""" choices=""1,2,3"" index=""1"" is-enabled=""false"" />
<!-- C# SetOptions로 -->
<utk:UTKDropdown name=""dropdown-1"" label=""Select Option"" />
</ui:UXML>");
2026-01-23 19:04:12 +09:00
}
private enum SampleEnum { Option1, Option2, Option3 }
private void InitializeEnumDropDownSample(VisualElement root)
{
var enumRow = root.Q<VisualElement>("enum-dropdown-row");
if (enumRow != null)
{
var field = new UTKEnumDropDown("Choice", SampleEnum.Option1);
enumRow.Add(field);
}
SetCodeSamples(root,
csharpCode: @"// Enum 정의
public enum SampleEnum { Option1, Option2, Option3 }
public enum Difficulty { Easy, Normal, Hard, Expert }
2026-01-23 19:04:12 +09:00
// 기본 사용법 (생성자로 label과 기본값 지정)
2026-01-23 19:04:12 +09:00
var enumField = new UTKEnumDropDown(""Choice"", SampleEnum.Option1);
// 값 변경 이벤트
enumField.OnValueChanged += (newValue) =>
{
Debug.Log($"" : {newValue}"");
// Enum으로 캐스팅하여 사용
if (newValue is SampleEnum sample)
{
Debug.Log($""SampleEnum: {sample}"");
}
};
// 난이도 선택 예시
var difficultyDropdown = new UTKEnumDropDown("""", Difficulty.Normal);
difficultyDropdown.OnValueChanged += (value) =>
{
var difficulty = (Difficulty)value;
Debug.Log($"" : {difficulty}"");
2026-01-23 19:04:12 +09:00
};
// 현재 선택된 값 가져오기
var currentValue = enumField.Value;
if (currentValue is SampleEnum sample)
{
Debug.Log($"" : {sample}"");
}
2026-01-23 19:04:12 +09:00
// 프로그램으로 값 변경
enumField.Value = SampleEnum.Option2;
// 이벤트 없이 값 변경
enumField.SetValue(SampleEnum.Option3, notify: false);
2026-01-23 19:04:12 +09:00
// Disabled
enumField.IsEnabled = false;",
uxmlCode: @"<!-- 네임스페이스 선언 -->
<ui:UXML xmlns:utk=""UVC.UIToolkit"">
<!-- UTKEnumDropDown은 -->
<!-- C# enum Init() -->
2026-01-23 19:04:12 +09:00
<!-- Enum -->
<utk:UTKEnumDropDown name=""enum-dropdown-1"" label=""Choice"" />
<!-- Disabled -->
<utk:UTKEnumDropDown name=""enum-dropdown-2"" label=""Choice"" is-enabled=""false"" />
</ui:UXML>
<!-- C# -->
<!--
var enumDropdown = root.Q<UTKEnumDropDown>(""enum-dropdown-1"");
enumDropdown.Init(SampleEnum.Option1); // 필수!
-->");
2026-01-23 19:04:12 +09:00
}
private void InitializeMultiSelectDropdownSample(VisualElement root)
{
var normalRow = root.Q<VisualElement>("multiselect-normal-row");
if (normalRow != null)
{
var dropdown = new UTKMultiSelectDropdown("Select Categories");
dropdown.SetOptions(new List<string> { "Category 1", "Category 2", "Category 3", "Category 4", "Category 5" });
dropdown.SetSelectedIndices(new List<int> { 0, 2 });
normalRow.Add(dropdown);
}
var disabledRow = root.Q<VisualElement>("multiselect-disabled-row");
if (disabledRow != null)
{
var dropdown = new UTKMultiSelectDropdown("Disabled");
dropdown.SetOptions(new List<string> { "Option 1", "Option 2", "Option 3" });
dropdown.SetSelectedIndices(new List<int> { 0, 1 });
dropdown.IsEnabled = false;
disabledRow.Add(dropdown);
}
SetCodeSamples(root,
csharpCode: @"// 기본 사용법
var dropdown = new UTKMultiSelectDropdown(""Select Categories"");
dropdown.SetOptions(new List<string> { ""Category 1"", ""Category 2"", ""Category 3"", ""Category 4"", ""Category 5"" });
// 선택 이벤트 (인덱스 목록과 값 목록 모두 전달)
dropdown.OnSelectionChanged += (indices, values) =>
{
Debug.Log($"" : {values.Count}"");
Debug.Log($"" : {string.Join("", "", values)}"");
Debug.Log($"": [{string.Join("", "", indices)}]"");
};
// 생성자로 한 번에 설정
var categoryDropdown = new UTKMultiSelectDropdown(
"" "",
new List<string> { """", """", """", """" }
);
// 기본값 설정 (인덱스로)
categoryDropdown.SetSelectedIndices(new List<int> { 0, 2 });
// 기본값 설정 (값으로)
categoryDropdown.SetSelectedValues(new List<string> { """", """" });
// 이벤트 없이 선택 변경 (초기화 시 유용)
categoryDropdown.SetSelectedIndices(new List<int> { 1, 3 }, notify: false);
// 선택된 값 가져오기
var selectedIndices = dropdown.SelectedIndices;
var selectedValues = dropdown.SelectedValues;
// 전체 선택
dropdown.SelectAll();
// 전체 해제
dropdown.ClearSelection();
// 옵션 동적 변경
dropdown.SetOptions(new List<string> { ""New 1"", ""New 2"", ""New 3"" });
// Disabled
var disabledDropdown = new UTKMultiSelectDropdown(""Disabled"");
disabledDropdown.SetOptions(new List<string> { ""Option 1"", ""Option 2"", ""Option 3"" });
disabledDropdown.SetSelectedIndices(new List<int> { 0, 1 });
disabledDropdown.IsEnabled = false;",
uxmlCode: @"<!-- 네임스페이스 선언 -->
<ui:UXML xmlns:utk=""UVC.UIToolkit"">
<!-- ( ) -->
<utk:UTKMultiSelectDropdown label="""" choices="",,,"" />
<!-- () -->
<utk:UTKMultiSelectDropdown label=""""
choices="",, ,""
selected-indices=""0,1"" />
<!-- -->
<utk:UTKMultiSelectDropdown label=""""
choices="",,,""
placeholder="" "" />
<!-- -->
<utk:UTKMultiSelectDropdown label=""""
choices=""1,2,3""
selected-indices=""0,2""
is-enabled=""false"" />
<!-- C# SetOptions로 -->
<utk:UTKMultiSelectDropdown name=""multiselect-1"" label=""Select Options"" />
</ui:UXML>");
}
#endregion
#region Slider Initializers
private void InitializeSliderSample(VisualElement root)
{
SetCodeSamples(root,
csharpCode: @"// 기본 슬라이더
var slider = new UTKSlider();
slider.label = """"; // Unity Slider의 label 프로퍼티 (소문자)
slider.lowValue = 0;
slider.highValue = 100;
slider.value = 50;
slider.OnValueChanged += (value) => Debug.Log($"": {value}"");
// 생성자로 생성
var volumeSlider = new UTKSlider("""", 0, 100, 75);
// 정수만 허용
slider.showInputField = true;
// 비활성화
slider.IsEnabled = false;",
uxmlCode: @"<!-- 네임스페이스 선언 -->
<ui:UXML xmlns:utk=""UVC.UIToolkit"">
<!-- -->
<utk:UTKSlider label="""" low-value=""0"" high-value=""100"" value=""50"" />
<!-- -->
<utk:UTKSlider label="""" low-value=""1"" high-value=""10"" value=""5"" whole-numbers=""true"" />
<!-- -->
<utk:UTKSlider label="""" is-enabled=""false"" value=""30"" />
2026-02-02 19:33:27 +09:00
</ui:UXML>");
}
private void InitializeSliderIntSample(VisualElement root)
{
SetCodeSamples(root,
csharpCode: @"// 기본 정수 슬라이더
var slider = new UTKSliderInt();
slider.label = """"; // Unity SliderInt의 label 프로퍼티 (소문자)
slider.lowValue = 1;
slider.highValue = 10;
slider.value = 5;
slider.OnValueChanged += (value) => Debug.Log($"": {value}"");
// 생성자로 생성
var levelSlider = new UTKSliderInt("""", 1, 10, 5);
// 수량 슬라이더
var quantitySlider = new UTKSliderInt("""", 0, 100, 25);
quantitySlider.OnValueChanged += (value) => Debug.Log($"": {value}"");
// 페이지 선택
var pageSlider = new UTKSliderInt("""", 1, 100, 1);
pageSlider.OnValueChanged += (page) => LoadPage(page);
// 비활성화
slider.IsEnabled = false;",
uxmlCode: @"<!-- 네임스페이스 선언 -->
<ui:UXML xmlns:utk=""UVC.UIToolkit"">
<!-- -->
<utk:UTKSliderInt label="""" low-value=""1"" high-value=""10"" value=""5"" />
<!-- -->
<utk:UTKSliderInt label="""" low-value=""0"" high-value=""100"" value=""25"" />
<!-- -->
<utk:UTKSliderInt label="""" is-enabled=""false"" value=""30"" />
</ui:UXML>");
}
private void InitializeMinMaxSliderSample(VisualElement root)
{
SetCodeSamples(root,
csharpCode: @"// 기본 MinMax 슬라이더
var minMaxSlider = new UTKMinMaxSlider();
minMaxSlider.label = "" ""; // Unity MinMaxSlider의 label 프로퍼티
minMaxSlider.lowLimit = 0; // 전체 범위 최소값
minMaxSlider.highLimit = 1000; // 전체 범위 최대값
minMaxSlider.MinValue = 100; // 선택 범위 최소값
minMaxSlider.MaxValue = 500; // 선택 범위 최대값
// 값 변경 이벤트 (Vector2로 반환됨)
minMaxSlider.OnValueChanged += (range) =>
{
Debug.Log($"": {range.x} ~ {range.y}"");
};
// 생성자로 생성 (label, lowLimit, highLimit, minValue, maxValue)
var rangeSlider = new UTKMinMaxSlider("""", 0, 100, 20, 80);
// 비활성화
minMaxSlider.IsEnabled = false;",
uxmlCode: @"<!-- 네임스페이스 선언 -->
<ui:UXML xmlns:utk=""UVC.UIToolkit"">
<!-- MinMax -->
<utk:UTKMinMaxSlider label="" "" min-limit=""0"" max-limit=""1000"" min-value=""100"" max-value=""500"" />
<!-- -->
<utk:UTKMinMaxSlider label="""" is-enabled=""false"" />
</ui:UXML>");
}
private void InitializeProgressBarSample(VisualElement root)
{
SetCodeSamples(root,
csharpCode: @"// 기본 프로그레스 바
var progressBar = new UTKProgressBar();
progressBar.title = """"; // ProgressBar의 title 프로퍼티
progressBar.MinValue = 0; // 또는 lowValue 직접 사용
progressBar.MaxValue = 100; // 또는 highValue 직접 사용
progressBar.Value = 45;
// 생성자로 생성 (title, minValue, maxValue, defaultValue)
var downloadBar = new UTKProgressBar("""", 0, 100, 75);
// 진행률 업데이트
progressBar.Value = 75;
// 퍼센트 표시
progressBar.ShowPercentage = true;
// 색상 변형
progressBar.Variant = UTKProgressBar.ProgressBarVariant.Success;
progressBar.Variant = UTKProgressBar.ProgressBarVariant.Warning;
progressBar.Variant = UTKProgressBar.ProgressBarVariant.Danger;
// 비동기 작업 진행률 표시
async UniTask LoadDataAsync()
{
for (int i = 0; i <= 100; i += 10)
{
progressBar.Value = i;
await UniTask.Delay(100);
}
}",
uxmlCode: @"<!-- 네임스페이스 선언 -->
<ui:UXML xmlns:utk=""UVC.UIToolkit"">
<!-- -->
<utk:UTKProgressBar label="""" low-value=""0"" high-value=""100"" value=""45"" />
<!-- -->
<utk:UTKProgressBar label="""" value=""100"" variant=""Success"" />
<!-- -->
<utk:UTKProgressBar label="""" value=""75"" variant=""Warning"" />
<!-- -->
<utk:UTKProgressBar label="""" value=""30"" variant=""Danger"" />
</ui:UXML>");
}
#endregion
2026-01-23 19:04:12 +09:00
}