Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

قص النصوص

النموذج الحالي

UTextLabel يستخدم مرحلتين منفصلتين للقص:

  • قص محلي داخل الـ label نفسه
  • قص اختياري من الأسلاف عبر UClip

القص المحلي داخل UTextLabel

القص المحلي يتم داخل sync_text_label_meshes.

  • النظام يبني quads للمحارف انطلاقًا من النص المقاس
  • عندما يكون overflow هو Clip أو Ellipsis يتم قص كل quad على حدود محتوى الـ label قبل بناء الـ mesh
  • عندما يكون overflow هو Visible يتم تعطيل هذا القص المحلي

إذا كان Ellipsis مفعّلًا، فالنظام يقيس النص أولًا، ثم يختصره عند الحاجة، ثم يقص المحارف المتبقية داخل حدود الـ label.

الـ labels التي تعمل بـ autosize ما زالت تحترم قيود الأب إذا كان للأب أبعاد صريحة، لذلك يتوقف الفيض عند حد الأب بدل أن يستمر في التمدد بلا نهاية.

القص عبر الأسلاف UClip

قص الأسلاف يتم داخل sync_text_clipper_materials.

  • النظام يصعد من كل mesh نصي مولد
  • يبحث عن أقرب ancestor يحمل UClip مفعّلًا
  • ينسخ مركز القص وحجمه ونصف قطر الزوايا إلى مادة النص SDF
  • الشيدر يقص النص داخل ذلك المستطيل ذي الزوايا المستديرة

بهذا صار قص النص مرتبطًا بمسار المادة/الشيدر، وليس بإخفاء كيان النص بالكامل.

ما الذي تغيّر؟

كانت الوثائق القديمة تصف حلًا يعتمد على الإظهار أو الإخفاء الكامل عندما يخرج النص خارج ancestor قاص.

هذا لم يعد هو السلوك الحالي:

  • القص المحلي يتم على مستوى quads الخاصة بالمحارف
  • بيانات UClip تنتقل إلى المادة/الشيدر
  • يمكن أن يبقى جزء من النص ظاهرًا بدل سلوك الإخفاء الكامل

قيد معروف

حاليًا مادة النص تستخدم أقرب ancestor يحمل UClip مفعّلًا فقط. إذا كانت هناك عدة أسلاف قاصين متداخلين، فهي لا تُدمج بعد في تقاطع قص واحد للنص.