قص النصوص
النموذج الحالي
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 مفعّلًا فقط. إذا كانت هناك عدة أسلاف قاصين متداخلين، فهي لا تُدمج بعد في تقاطع قص واحد للنص.