كيو تي؟ ImGUI؟ wxWidgets؟ نكتب لدينا

مرحبا خابروفيتس! أريد أن أخبرك عن نظام واجهة المستخدم الخاص بي ، والذي كتبته لمحرك اللعبة الخاص بي ، والذي أقوم بعمل محرر له. مثله:

لذلك ، للمرة الألف بدأت في كتابة المحرك ، وقررت بحزم أنه هذه المرة سأفعل كل شيء بشكل جيد وصحيح. واحد من هؤلاء "الجيد والصحيح" هو محرر WYSIWYG على غرار Unity3D. بالمناسبة ، قبل ذلك كان لدي بالفعل خبرة في تطوير مثل هؤلاء المحررين على Qt. وبحلول ذلك الوقت ، فهمت بالفعل أن المهمة ليست سهلة إذا كنت أرغب في إنشاء محرر جيد حقًا. وهذا يتطلب نظام واجهة مستخدم جيد جدًا ومرنًا سأكون على دراية جيدة به وأعرف كل أنواع التفاصيل الدقيقة. في الواقع ، في مثل هذا المحرر ، سيكون هناك الكثير من عناصر واجهة المستخدم وعناصر التحكم المخصصة وما إلى ذلك. لذلك ، يجب ألا يكون هناك حل وسط بين جودة المحرر وإمكانيات نظام واجهة المستخدم.

UI. .. 2D , (- , , , ..), UI .

" , ?" - .

, , , - . - . . , .

UI :

  • UI-

.

UI- : . . - .

UI - , ..

(): , , , . (draw call), , , . API , - .

- , - . , . : , , .

9-slice . , 9 :

, , , , . , .

- , ? ( ) . , - . - .

, , :

كائن بسيط ، يمتد فقط
,
سبرايت 9 شرائح ، يمتد بشكل متناسب
9-slice ,
يظهر التقدم في التعبئة الدائرية
تعبئة رأسية
تعبئة أفقية
تكرار الملمس
الحفاظ على نسبة العرض إلى الارتفاع والملاءمة

- . , , . .

.

, - .

:

:

  • ,

  • FreeType

, .. . - , . - , , , - . - , -. , , .

, , . . :

. , . : , , , . . , . , , . , "...", .

, .

- . , , .

.

IRectDrawable

, IRectDrawable. , ( 23), , , . IRectDrawable IDrawable ( ) Transform ( 23, Basis).

, Graphic API , , . , UI . , , , . , . , . , , .

. : , . . . , .

, - . -, . . , .

- , .

IDrawable , .

, - . - .

( , touch-screen), , , . . .

. -, , . , . - - . , , .

CursorAreaEventsListener. , . , , . , EventsSystem, CursorAreaEventListenersLayer.

? ? ? . , . , , . - , , , , , .

. , . , , .. . , . , "" , , .

. , , .

, . , , . , . , , . . .. IRectDrawable.

عرض التداخل البديل

, , "" . , , , . - , . , .

, , , , .

. ( , IRectDrawable), IDrawable::OnDrawn(). .

. - Actor, , , , , , Actor'. . - Actor'.

Actor' . , . , , , , Actor'.

UI . , UI - Actor'. Widget.

Widget

"" . Actor , , , , Widget' .

Widgt' WidgetLayout, ActorTransform. , , Actor'.

. . . . , "" , . Unity GUI.

WidgetLayer

Actor', Widget' WidgetLayer. - Widget, IRectDrawable WidgetLayout' WidgetLayerLayout.

, . , .. .

Widget', Widget'. , , . , , .

- Widget', Widget'.

WidgetState

- . , . , .. .

Widget' - WidgetState'. -. - , . . . , . . , . .

. - Actor', Widget', Layout', WidgetLayer' .. , - . , children/0/transform/anchor.

, . ,

  • -

  • -

  • -

  • -

, , ..

Widget', .

Widget'

, Widget' Widget, . . - Widget, . - .

, , . Widget', Widget', "" Widget'. , Widget' .

Layout-Widget'

Widget', Widget'. , HorizontalLayout . VerticalLayout, . GridLayout, .

مزيج تخطيط أفقي / عمودي
Horizontal/VerticalLayout

Layout' ( , ), , . .

مثال على التنسيق سريع الاستجابة في محرر الخيارات

Layout' :

  • Widget'. , .

  • , . Layout', , . ", "

  • . - , ,

  • , WidgetLayout

Widget'

UI , . , Widget . Widget , KeyboardEventsListener, CursorAreaEventsListener.

:

  • Checkbox

  • ,

  • / progress-bar

  • / scroll bar

- , . .

PopupWidget. . . . , . , , : , .

قائمة السياق الهرمية

, .

: anti-aliased

. , OpenGL D3D, , "". .

anti-aliasing'. : , , . , , , .

, . , 8 . . ""

, , , . , , . , . , , . , , 60 .

, . ++ .

Unity3D, . Unity3D " ", , , "", . . , Canvas', , Unity3D.

, , . . , Actor', . - Widget. . .

Widget'

, - Widget', . , . , , . - .

. , API , . , . .

, - Widget , , . - , , .

, Widget' CheckClipping, . : , . , Widget'. - -, . .

Widget' . , , . , .

, . , , .

. , . "" . Widget - , , . Widget' , , . , "" , , . , , , .

, , . , .. .

, ? ? , . , .

:

  • Widget' . Widget'

  • Actor'

UI , . .

6 -. . ImGUI, , "" , .

PS: - 2D , . . , .




All Articles