Aracılığıyla paylaş


BoundsControl — MRTK3

Sınır denetimi

BoundsControl, döndürme ve ölçeklendirme için işleme olanaklarının yanı sıra otomatik olarak boyutlandırılmış bir sınırlayıcı kutu sağlar.

MRTK 2.x'te, BoundsControl çoğunlukla ScriptableObjects yapılandırması kullanılarak çalışma zamanı oluşturuldu. MRTK3'te, BoundsControl kurulumu ve özelleştirmesi önemli ölçüde basitleştirildi. Sınır görselleri ve tanıtıcıları, BoundsControl'un çalışma zamanında örnek oluşturduğu özelleştirilebilir bir ön kaynaktır. Geliştiriciler görselleri önceden ayarlayıp özelleştirebilir, hatta sıfırdan yeni sınırlar görselleri oluşturabilir. Yeni Karma Gerçeklik Tasarım Dili'ni izleyerek standart sınır görselleri uygulamaları sunuyoruz.

Yeni görseller, kullanıcının amacını ve nesnenin işlemesini en az müdahaleci görsel kirlilikle gösteren kolaylaştırılmış görsel geri bildirim sunar.

Kurulum

Var olan bir nesneye BoundsControl eklemeniz ve başvuruyu BoundsVisualsPrefab kullanmak istediğiniz sınır görselleriyle doldurmanız yeterlidir. Kullanmanız için önceden oluşturulmuş birkaç farklı sınır görseli sunuyoruz.

Önemli

Kullanıcıların nesneyi mümkün olduğunca küçük veya büyük bir boyuta ölçeklendirmesini önlemek için geliştiricilerin MinMaxScaleConstraint eklemesini kesinlikle öneririz.

Sınır görsellerinin amacını ve odak efektlerini kullanmak için nesne üzerinde bir StatefulInteractable değerinizin olması gerekir. Etkileşim otomatik olarak algılanmazsa, bağlantıyı BoundsControl denetçisinde belirtebilirsiniz.

Not

Geliştiricilerin, affordance tabanlı işlemeye ek olarak kullanıcılara doğrudan işleme sunmak için BoundsControl ile birlikte ObjectManipulator kullanmasını öneririz. ObjectManipulator, sınır görsellerinin yanıt verdiği vurgulama/odak durumları için olarak hizmet StatefulInteractable verebilir.

Görsellerin sınırlarının ön öğeleri

BoundsControl ile kullanılmak üzere önceden oluşturulmuş birkaç sınır görseli sunuyoruz. Geliştiricilerin bu görsellerin prefabrik varyantlarını oluşturması ve bunları ihtiyaçlarına uyacak şekilde özelleştirmesi önerilir. Tanıtıcı animasyonları ve durumları StateVisualizer tarafından desteklenerek geliştiricilerin affordance'ların genel görünümünü daha fazla özelleştirmesine olanak sağlanır.

Oklusion stilini işleme

Bu sınır görselleri, kullanıcı için daha az dikkat dağıtıcı özellik sunan basitleştirilmiş bir görsel tasarım sunar. Yalnızca sınırların kenarları boyunca ilgili tutamaçlar görünür. Sınırlar görselleri, kullanıcı amacına ve seçim ilerlemesine bağlı olarak daraltma, genişletme ve renk/kalınlık değiştirme. Bu sınırların görsel stilini kullanmanızı kesinlikle öneririz.

Gizli tanıtıcılar

Yalnızca amaç

Bazı bağlamlarda tanıtıcılar istenmeyen olabilir ve geliştiriciler sınır görsellerini kullanıcı amacının hoş bir göstergesi olarak tek başına kullanmak isteyebilir. Bu prefabrik işi yaparken, HandleType.None seçilerek diğer sınır görsellerinden herhangi birinde aynı etki elde edilebilir. Sıkıştırılabilir sınır görsellerinin, yalnızca tanıtıcı tabanlı işleme için değil, birçok farklı bağlam için tatmin edici ve hoş bir görsel geri bildirim öğesi olduğunu bulduk.

Tutamaç yok

Eski stil

Bu sınır görselleri kutunun tüm tutamaçlarını ve kenarlarını gösterir. Bu, eski tasarım diliyle ve MRTK 2.x'te görülen önceki davranışla daha yakından eşleşir; ancak, bu tasarım gereksiz görsel gürültü nedeniyle kullanıcılar için daha dikkat dağıtıcı olabilir. Buna ek olarak, nesnenin önünde (ve arkasında) olan tutamaçların varlığı, dolaylı bakış-sıkıştırma manipülasyonunda sorunlara neden olabilir. Özellikle bakış hedeflemeden yararlanan yeni uygulamalar için bu stili kullanmanızı önermiyoruz.

Geleneksel tutamaçlar

Etkileşim tasarımı

Geçerli yinelemede basit bir etkinleştirme/devre dışı bırakma etkileşimi sunuyoruz. Sınırlar yerinde tıklanarak (başka bir deyişle nesneyi seçerek, taşımadan ve serbest bırakarak) tutamaçlar açılabilir ve kapatılabilir. Bu denetimin uzaklık toleransı ile DragToggleThresholdayarlanabilir ve bu etkinleştirme davranışının ToggleHandlesOnClick kendisi özelliğiyle etkinleştirilebilir/devre dışı bırakılabilir.

Sınır denetimi iki durumlu düğmesi

tutamaçlar herhangi bir zamanda ayarıyla HandlesActiveel ile etkinleştirilebilir veya koddan devre dışı bırakılabilir.

Otomatik sınır hesaplaması

BoundsControl, ilişkili nesnenin sınırlarını otomatik olarak hesaplamayı dener. Belirli bir sınır şekli isteniyorsa seçeneği işaretleyin OverrideBounds ve sınırlar nesnesini doğrudan belirtin. Sınır hesaplama sistemi yalnızca belirtilen geçersiz kılma nesnesi için sınırları hesaplar.

Algoritmanın BoundsCalculationMethod sınırları hesaplama şeklini etkiler. Kapalı nesnenin görsel şekli mutlaka harmanlayıcıyla eşleşmiyorsa veya tersi doğruysa, geliştiriciler hesaplama yöntemini işleyici veya harmanlama sınırlarını ya da her ikisinin bir bileşimini kullanmayı tercih etmek üzere ayarlayabilir.

Hesaplama yöntemi ne olursa olsun, Padding seçeneği sınırları dünya birimlerinde tekdüzen olarak doldurmaya devam eder. Sınırlar düzleştirilirken, düzleştirilmiş eksen sabitlenmez.

Düzleştirme

Düzleştirilmiş BoundsControl

BoundsControl, 2B içeriği işlemek için de kullanılabilir. olarak ayarlanırsa FlattenModeAuto, nesne herhangi bir eksen boyunca yeterince düzse BoundsControl kendisini 2B dikdörtgen sınırlara düzleştirilir. Nesne yeterince düz değilse, ancak yine de dikdörtgen sınırların karşılarını istiyorsanız, FlattenMode.Always BoundsControl her zaman en derin eksen boyunca düz olacaktır. Buna karşılık, FlattenMode.Never nesne çok ince olsa bile BoundsControl'un düzleştirmesini engeller.

düzenleme seçenekleri

BoundsControl'un işleme davranışı çeşitli şekillerde ayarlanabilir. seçeneği, RotateAnchor döndürme affordances kullanılırken BoundsControl'un döndürüldiği pivot noktasını denetler. Bazı nesnelerin özet noktaları görsel merkezinden çok uzaktır ve bu da döndürme tutamaçlarıyla işlerken rahatsızlık ve kararsızlığa neden olabilir. için RotateAnchor belirtilmesiBoundsCenter, BoundsControl'un her zaman nesnenin gerçek kaynağı yerine hesaplanan sınırların geometrik merkezi etrafında dönmesine neden olur.

Ölçeklendirme davranışı veya Non Uniformolarak Uniform ayarlanabilir. Tekdüzen modunda, nesnenin tüm eksenleri birlikte ölçeklendirilerek en boy oranı ve görünüm korunur. Tekdüzen olmayan ölçeklendirme, nesnenin her ekseninin bağımsız olarak ölçeklendirilmesini sağlar.