UTKToolBar 개발 완료

This commit is contained in:
logonkhi
2026-02-19 18:40:37 +09:00
parent 0333b83b57
commit 739a62eb9b
112 changed files with 7496 additions and 46 deletions

View File

@@ -58,7 +58,7 @@ namespace UVC.UIToolkit
/// </code>
/// <para><b>Validation (입력 검증):</b></para>
/// <code>
/// // 검증 함수 설정 (Func&lt;bool&gt;)
/// // 검증 함수 설정 (Func<bool>)
/// var boundsField = new UTKBoundsField("경계");
/// boundsField.ErrorMessage = "크기는 양수여야 합니다.";
/// boundsField.Validation = () => boundsField.Value.size.x > 0 &amp;&amp; boundsField.Value.size.y > 0 &amp;&amp; boundsField.Value.size.z > 0;

View File

@@ -48,7 +48,7 @@ namespace UVC.UIToolkit
/// </code>
/// <para><b>Validation (입력 검증):</b></para>
/// <code>
/// // 검증 함수 설정 (Func&lt;bool&gt;)
/// // 검증 함수 설정 (Func<bool>)
/// var precisionField = new UTKDoubleField("정밀 값", 0);
/// precisionField.ErrorMessage = "값은 0보다 커야 합니다.";
/// precisionField.Validation = () => precisionField.Value > 0;

View File

@@ -48,7 +48,7 @@ namespace UVC.UIToolkit
/// </code>
/// <para><b>Validation (입력 검증):</b></para>
/// <code>
/// // 검증 함수 설정 (Func&lt;bool&gt;)
/// // 검증 함수 설정 (Func<bool>)
/// var speedField = new UTKFloatField("속도", 0f);
/// speedField.ErrorMessage = "속도는 0보다 커야 합니다.";
/// speedField.Validation = () => speedField.Value > 0f;
@@ -58,7 +58,7 @@ namespace UVC.UIToolkit
/// // 범위 검증
/// var temperatureField = new UTKFloatField("온도", 20f);
/// temperatureField.ErrorMessage = "온도는 -40 ~ 60 사이여야 합니다.";
/// temperatureField.Validation = () => temperatureField.Value >= -40f &amp;&amp; temperatureField.Value &lt;= 60f;
/// temperatureField.Validation = () => temperatureField.Value >= -40f &amp;&amp; temperatureField.Value <= 60f;
///
/// // 강제 검증 호출 (예: 폼 제출 버튼 클릭 시)
/// bool isValid = speedField.Validate();

View File

@@ -66,7 +66,7 @@ namespace UVC.UIToolkit
/// <code>
/// var volumeStepper = new UTKFloatStepper(0f, 1f, 0.5f, 0.1f);
/// volumeStepper.ErrorMessage = "볼륨은 0~1 사이여야 합니다.";
/// volumeStepper.Validation = () => volumeStepper.Value >= 0f &amp;&amp; volumeStepper.Value &lt;= 1f;
/// volumeStepper.Validation = () => volumeStepper.Value >= 0f &amp;&amp; volumeStepper.Value <= 1f;
/// </code>
/// <para><b>UXML에서 사용:</b></para>
/// <code><![CDATA[

View File

@@ -37,7 +37,7 @@ namespace UVC.UIToolkit
/// </code>
/// <para><b>Validation (입력 검증):</b></para>
/// <code>
/// // 검증 함수 설정 (Func&lt;bool&gt;)
/// // 검증 함수 설정 (Func<bool>)
/// var emailInput = new UTKInputField("이메일", "example@email.com");
/// emailInput.ErrorMessage = "올바른 이메일 형식이 아닙니다.";
/// emailInput.Validation = () => emailInput.Value.Contains("@");

View File

@@ -85,7 +85,7 @@ namespace UVC.UIToolkit
/// <code>
/// var monthStepper = new UTKIntStepper(1, 12, 1, 1);
/// monthStepper.ErrorMessage = "유효하지 않은 월입니다.";
/// monthStepper.Validation = () => monthStepper.Value >= 1 &amp;&amp; monthStepper.Value &lt;= 12;
/// monthStepper.Validation = () => monthStepper.Value >= 1 &amp;&amp; monthStepper.Value <= 12;
///
/// bool isValid = monthStepper.Validate();
/// monthStepper.ClearError();

View File

@@ -46,10 +46,10 @@ namespace UVC.UIToolkit
/// </code>
/// <para><b>Validation (입력 검증):</b></para>
/// <code>
/// // 검증 함수 설정 (Func&lt;bool&gt;)
/// // 검증 함수 설정 (Func<bool>)
/// var ageField = new UTKIntegerField("나이", 0);
/// ageField.ErrorMessage = "나이는 1~150 사이여야 합니다.";
/// ageField.Validation = () => ageField.Value >= 1 &amp;&amp; ageField.Value &lt;= 150;
/// ageField.Validation = () => ageField.Value >= 1 &amp;&amp; ageField.Value <= 150;
/// // → FocusOut 시 자동으로 검증
/// // → 실패 시 붉은 외곽선 + 에러 메시지 표시, 통과 시 자동 해제
///

View File

@@ -43,7 +43,7 @@ namespace UVC.UIToolkit
/// </code>
/// <para><b>Validation (입력 검증):</b></para>
/// <code>
/// // 검증 함수 설정 (Func&lt;bool&gt;)
/// // 검증 함수 설정 (Func<bool>)
/// var fileSizeField = new UTKLongField("파일 크기", 0);
/// fileSizeField.ErrorMessage = "파일 크기는 0보다 커야 합니다.";
/// fileSizeField.Validation = () => fileSizeField.Value > 0;

View File

@@ -51,7 +51,7 @@ namespace UVC.UIToolkit
/// </code>
/// <para><b>Validation (입력 검증):</b></para>
/// <code>
/// // 검증 함수 설정 (Func&lt;bool&gt;)
/// // 검증 함수 설정 (Func<bool>)
/// var areaField = new UTKRectField("영역");
/// areaField.ErrorMessage = "너비와 높이는 0보다 커야 합니다.";
/// areaField.Validation = () => areaField.Value.width > 0 &amp;&amp; areaField.Value.height > 0;
@@ -91,7 +91,7 @@ namespace UVC.UIToolkit
/// var uvField = new UTKRectField("UV 영역");
/// uvField.Value = sprite.rect;
/// uvField.ErrorMessage = "UV 영역은 텍스처 범위를 초과할 수 없습니다.";
/// uvField.Validation = () => uvField.Value.xMax &lt;= texture.width &amp;&amp; uvField.Value.yMax &lt;= texture.height;
/// uvField.Validation = () => uvField.Value.xMax <= texture.width &amp;&amp; uvField.Value.yMax <= texture.height;
/// uvField.OnValueChanged += (newRect) => {
/// // 스프라이트 영역 업데이트
/// UpdateSpriteRect(sprite, newRect);

View File

@@ -53,7 +53,7 @@ namespace UVC.UIToolkit
/// </code>
/// <para><b>Validation (입력 검증):</b></para>
/// <code>
/// // 검증 함수 설정 (Func&lt;bool&gt;)
/// // 검증 함수 설정 (Func<bool>)
/// var sizeField = new UTKVector2Field("크기");
/// sizeField.ErrorMessage = "크기는 양수여야 합니다.";
/// sizeField.Validation = () => sizeField.Value.x > 0 && sizeField.Value.y > 0;

View File

@@ -54,7 +54,7 @@ namespace UVC.UIToolkit
/// </code>
/// <para><b>Validation (입력 검증):</b></para>
/// <code>
/// // 검증 함수 설정 (Func&lt;bool&gt;)
/// // 검증 함수 설정 (Func<bool>)
/// var posField = new UTKVector3Field("위치");
/// posField.ErrorMessage = "Y값은 0 이상이어야 합니다.";
/// posField.Validation = () => posField.Value.y >= 0;

View File

@@ -54,10 +54,10 @@ namespace UVC.UIToolkit
/// </code>
/// <para><b>Validation (입력 검증):</b></para>
/// <code>
/// // 검증 함수 설정 (Func&lt;bool&gt;)
/// // 검증 함수 설정 (Func<bool>)
/// var colorField = new UTKVector4Field("색상");
/// colorField.ErrorMessage = "알파 값은 0~1 사이여야 합니다.";
/// colorField.Validation = () => colorField.Value.w >= 0 &amp;&amp; colorField.Value.w &lt;= 1;
/// colorField.Validation = () => colorField.Value.w >= 0 &amp;&amp; colorField.Value.w <= 1;
/// // → FocusOut 시 자동으로 검증
/// // → 실패 시 붉은 외곽선 + 에러 메시지 표시, 통과 시 자동 해제
///