BoundsControl – MRTK3
A BoundsControl automatikusan méretezhető határolókeretet biztosít, valamint a forgatáshoz és a méretezéshez szükséges módosítási lehetőségeket.
Az MRTK 2.x-ben a BoundsControl főként a ScriptableObjects konfiguráció használatával generált futtatókörnyezetet hozta létre. Az MRTK3-ban a BoundsControl beállítása és testreszabása jelentősen leegyszerűsítve lett. A határvizualizációk és -leírók egyszerűen egy testre szabható előfab, amelyet a BoundsControl példányosít futásidőben. A fejlesztők előre módosíthatják és testre szabhatják a vizualizációkat, vagy akár teljesen új határvizualizációkat is létrehozhatnak. Szabványos határvizualizáció-implementációkat biztosítunk az új Mixed Reality Design Language után.
Az új vizualizációk egyszerűsített vizuális visszajelzést nyújtanak, amely minimálisan tolakodó vizuális zajjal szemlélteti a felhasználó szándékát és manipulálását az objektumon.
Telepítés
Egyszerűen adja hozzá a BoundsControl elemet egy meglévő objektumhoz, és töltse fel a BoundsVisualsPrefab
hivatkozást a használni kívánt határvizualizációkkal. Néhány különböző előre elkészített határvizualizációt biztosítunk a használathoz.
Fontos
Határozottan javasoljuk, hogy a fejlesztők hozzáadják a MinMaxScaleConstraint elemet, hogy megakadályozzák, hogy a felhasználó használhatatlanul kis vagy nagy méretűre skálázhassa az objektumot.
A kötött vizualizációk szándékának és fókuszeffektusainak használatához rendelkeznie kell egy StatefulInteractable
objektummal. Ha a rendszer nem észleli automatikusan az interakciót, megadhatja a kapcsolatot a BoundsControl vizsgálóban.
Megjegyzés
Azt javasoljuk a fejlesztőknek, hogy a BoundsControl mellett az ObjectManipulatort is használják , hogy a megfizethetőség-alapú manipuláció mellett közvetlen manipulációt is kínáljanak a felhasználóknak. Az ObjectManipulator azoknak a StatefulInteractable
rámutatási/fókuszállapot-állapotoknak felelhet meg, amelyekre a kötött vizualizációk válaszolnak.
Kötött vizualizációk előtagjai
Számos előre elkészített határvizualizációt kínálunk a BoundsControl használatához. A fejlesztőknek javasoljuk, hogy készítsenek előregyártott változatokat ezekből a vizualizációkból, és szabják testre őket az igényeiknek megfelelően. A kezelőanimációkat és állapotokat a StateVisualizer működteti, így a fejlesztők tovább szabhatják a megfizethetőség megjelenését és hangulatát.
Elzáródási stílus kezelése
Ezek a kötött vizualizációk egyszerűsített látványtervet kínálnak, és kevesebb zavaró tényezőt biztosítanak a felhasználó számára. Csak a megfelelő fogópontok láthatók a szegélyek szélei mentén. A kötött vizualizációk a felhasználói szándéktól és a kijelölési folyamattól függően szerződést kötnek, kibontják és módosítják a színt/vastagságot. Határozottan javasoljuk, hogy használja ezt a határvizualizációs stílust.
Csak szándék
Bizonyos környezetekben a leírók nemkívánatosak lehetnek, és a fejlesztők a kötött vizualizációkat csak a felhasználói szándék kellemes jelzéseként használhatják. Bár ez az előfaboló elvégzi a feladatot, ugyanez a hatás bármely más határvizualizációval is elérhető a HandleType.None kiválasztásával. Azt észleltük, hogy a korlátozott korlátú vizualizációk számos különböző környezetben kielégítő és élvezetes vizuális visszajelzési elemek, nem csak a kezelőalapú manipulációhoz.
Örökölt stílus
Ezek a határvizualizációk a doboz összes fogópontját és élét megjelenítik. Ez jobban megfelel az örökölt tervezési nyelvnek és az MRTK 2.x-ben tapasztalt korábbi viselkedésnek; ez a kialakítás azonban a szükségtelen vizuális zaj miatt zavaróbb lehet a felhasználók számára. Emellett az objektum előtt (és mögött) lévő fogópontok jelenléte problémákat okozhat a közvetett tekintet-csippentés manipulációval. Nem javasoljuk, hogy ezt a stílust használja az új alkalmazásokhoz, különösen azokhoz, akik kihasználják a tekintetes célzás előnyeit.
Interakció tervezése
A jelenlegi iterációban egyszerű aktiválási/deaktiválási interakciót kínálunk. Ha a helyi korlátokra kattint (vagyis kijelöli az objektumot, nem mozgatja, és felengedi), a fogópontok be- és kikapcsolhatók. Az ellenőrzés távolságtűrése a beállítással DragToggleThreshold
módosítható, és maga az aktiválási viselkedés is engedélyezhető/letiltható a ToggleHandlesOnClick
tulajdonsággal.
A leírók bármikor manuálisan aktiválhatók vagy inaktiválhatók a kódból a beállítással HandlesActive
.
Automatikus határszámítás
A BoundsControl automatikusan megkísérli kiszámítani a társított objektum határait. Ha egy adott kötött alakzatot szeretne használni, jelölje be a OverrideBounds
beállítást, és adja meg közvetlenül a bounds objektumot. A határszámítási rendszer csak a megadott felülbírálási objektum határértékeit számítja ki.
Ez BoundsCalculationMethod
befolyásolja, hogy az algoritmus hogyan számítja ki a határokat. Ha a zárt objektum vizualizációjának alakja nem feltétlenül egyezik meg a ütközővel, vagy az ellenkezője igaz, a fejlesztők módosíthatják a számítási módszert úgy, hogy inkább renderelőt vagy ütköztetőt használjanak, vagy mindkettő kombinációját használják.
A számítási módszertől függetlenül a Padding
lehetőség egységesen, világegységekben fogja kiszámolni a határokat. Ha a korlátok simulnak, a lapított tengely nincs kipárnázva.
Összeolvasztás
A BoundsControl a 2D-s tartalmak manipulálására is használható. Ha FlattenMode
a értékre Auto
van állítva, a BoundsControl egy 2D téglalap alakú határra simul, ha az objektum megfelelően lapos bármely tengely mentén. Ha az objektum nem elég lapos, de még mindig szeretné a téglalap alakú korlátok megfizethetőség, FlattenMode.Always
mindig simítsa a BoundsControl mentén a legvékonyabb tengelyen. Ezzel szemben FlattenMode.Never
a BoundsControl nem simul, még akkor is, ha az objektum nagyon vékony.
Kezelési lehetőségek
A BoundsControl manipulációs viselkedése többféleképpen módosítható. A RotateAnchor
beállítás azt a kimutatáspontot vezérli, amely körül a BoundsControl forgassa el a forgatókeret használatakor. Egyes objektumok kimutatáspontjai távol vannak a vizualizáció középpontjától, ami kényelmetlenséget és pontatlanságot okozhat a forgatási fogópontokkal való módosításkor.
BoundsCenter
RotateAnchor
A megadása esetén a BoundsControl mindig a számított korlátok geometriai középpontjában forog, nem pedig az objektum tényleges eredete körül.
A skálázási viselkedés a vagy Non Uniform
a értékre Uniform
állítható be. Egységes módban az objektum minden tengelye össze van skálázva, megőrizve a méretarányt és a megjelenést. A nem egységes skálázás lehetővé teszi, hogy az objektum minden tengelye egymástól függetlenül legyen skálázva.