Kísérleti funkciók – MRTK2
Egyes funkciók, amelyeken az MRTK csapata dolgozik, sok kezdeti értéket képviselnek még akkor is, ha még nem részleteztük teljesen a részleteket. Az ilyen típusú funkciók esetében azt szeretnénk, hogy a közösség korán láthassa őket. Mivel a ciklus korai szakaszában vannak, kísérletiként címkézzük őket, jelezve, hogy még mindig fejlődnek, és idővel változhatnak.
Mi várható egy kísérleti funkciótól?
Ha egy összetevő kísérletiként van megjelölve, a következőkre számíthat:
- Példa a használatot bemutató jelenetre, amely az almappában
MRTK/Examples/Experimental
található - Előfordulhat, hogy a kísérleti funkciók nem rendelkeznek dokumentumokkal.
- Valószínűleg nincsenek tesztjeik.
- A kísérleti funkciók változhatnak.
Kísérleti funkciókra vonatkozó irányelvek
A kísérleti kódnak külön mappában kell lennie
A kísérleti kódnak egy legfelső szintű kísérleti mappába kell lépnie, amelyet a kísérleti funkció neve követ. Ha például egy új funkcióval próbál hozzájárulni a FooBarhoz, tegye a kódot a következőbe:
- Példajelenetek, szkriptek
MRTK/Examples/Experimental/FooBar/
- Összetevőszkriptek, előfabs-ok
MRTK/SDK/Experimental/FooBar/
- A komponensvizsgálók a
MRTK/SDK/Inspectors/Experimental/FooBar
Ha a kísérleti funkciónév alatt almappát használ, próbálja meg tükrözni az MRTK mappastruktúráját.
A solverek például a MRTK/SDK/Experimental/FooBar/Features/Utilities/Solvers/FooBarSolver.cs
A jeleneteket egy jelenetmappában tartsa fent: MRTK/Examples/Experimental/FooBar/Scenes/FooBarExample.unity
Megjegyzés
Úgy gondoljuk, hogy nem rendelkezik egyetlen kísérleti gyökérmappával, és ehelyett a Kísérletit mondjuk alá helyeztük MRTK/Examples/HandTracking/Scenes/Experimental/HandBasedMenuExample.unity
. Úgy döntöttünk, hogy a bázison mappákkal dolgozunk, hogy könnyebben felfedezhetők legyenek a kísérleti funkciók.
A kísérleti kódnak egy speciális névtérben kell lennie
Győződjön meg arról, hogy a kísérleti kód olyan kísérleti névtérben található, amely megfelel a nem kísérleti helynek. Ha például az összetevő a solvers része a helyen Microsoft.MixedReality.Toolkit.Utilities.Solvers
, a névterének a következőnek kell lennie Microsoft.MixedReality.Toolkit.Experimental.Utilities.Solvers
: .
Ebben a lekéréses kérelemben talál egy példát.
A kísérleti funkcióknak [Kísérleti] attribútummal kell rendelkezniük
Adjon hozzá egy [Experimental]
attribútumot az egyik mező fölé, hogy egy kis párbeszédpanel jelenjen meg az összetevő-szerkesztőben, amely megemlíti, hogy a funkció kísérleti jellegű, és jelentős változásoknak vannak kitéve.
A kísérleti funkciók menüinek a "Kísérleti" almenübe kell tartoznia
Győződjön meg arról, hogy a kísérleti funkciók "kísérleti" almenük alatt találhatók, amikor parancsokat ad hozzá a szerkesztő menüihez. Íme, néhány példa:
Felső szintű menüparancs hozzáadása:
[MenuItem("Mixed Reality Toolkit/Experimental/MyCommand")]
public static void MyCommand()
Összetevőmenü hozzáadása:
[AddComponentMenu("MRTK/Experimental/MyCommand")]
Dokumentáció
A kísérleti funkció dokumentációjának hozzáadásához kövesse az alábbi lépéseket:
A kísérleti funkciók dokumentációjának a kísérleti mappában
readme.md
lévő fájlban kell lennie. Például MRTK/SDK/Kísérleti/PulseShader/readme.md.A Funkcióáttekintések területen adjon hozzá egy hivatkozást a Kísérleti szakaszában a következő helyen
Documentation/toc.yml
: .
Az MRTK-kódra gyakorolt hatás minimalizálása
Bár az MRTK-módosítás a kísérlet működését is eredményezheti, az hatással lehet másokra olyan módon, amire nem számít. Az MRTK-magkódra irányuló regressziók esetén a lekéréses kérelem visszaáll.
Törekedjen arra, hogy a kísérleti mappáktól eltérő mappákban ne legyen változás. Íme azoknak a mappáknak a listája, amelyek kísérleti módosításokkal rendelkezhetnek:
- MRTK/SDK/Kísérleti
- MRTK/SDK/Inspectors/Kísérleti
- MRTK/Példák/Kísérleti
Az ezeken a mappákon kívüli módosításokat nagyon óvatosan kell kezelni. Ha a kísérleti funkciónak tartalmaznia kell az MRTK-alapkód módosításait, fontolja meg az MRTK-módosítások felosztását egy külön lekéréses kérelemre, amely teszteket és dokumentációt tartalmaz.
A kísérleti funkció használata nem befolyásolhatja a felhasználók alapvető vezérlők használatára való képességét
A legtöbb ember nagyon gyakran használ olyan alapvető UX-összetevőket, mint a gomb, az ManipulationHandler és az Interactable. Valószínűleg nem fogják használni a kísérleti funkciót, ha megakadályozza, hogy gombokat használjanak.
Az összetevő használata nem szakíthatja meg a gombokat, az ManipulationHandlert, a Határolókeretet vagy az interakciót.
Ebben a ScrollableObjectCollection PR-ben például egy ScrollableObjectCollection hozzáadása miatt a felhasználók nem használhatják a HoloLens gomb előtagját. Annak ellenére, hogy ezt nem a lekéréses kérelem hibája okozta (hanem egy meglévő hibát), megakadályozta, hogy a lekéréses kérelem be legyen jelentkezve.
Adjon meg egy példajelenetet, amely bemutatja, hogyan használhatja a funkciót
Kapcsolatok látnia kell a funkció használatát és tesztelését.
Adjon meg egy példát az MRTK/Példák/Kísérleti/YOUR_FEATURE alatt
A felhasználó látható hibáinak minimalizálása a kísérleti funkciókban
Mások nem fogják használni a kísérleti funkciót, ha nem működik, nem végzi el a funkciót.
Tesztelje a példajelenetet a célplatformon, és győződjön meg arról, hogy a várt módon működik. Győződjön meg arról, hogy a funkció a szerkesztőben is működik, így a felhasználók akkor is gyorsan iterálhatnak és láthatják a funkciót, ha nem rendelkeznek a célplatformmal.
Kísérleti kód elvégzése MRTK-kódba
Ha egy funkció végül elég sok használatot tapasztal, akkor érdemes az alapSZINTŰ MRTK-kódra felematkáznunk. Ehhez a funkciónak tesztekkel, dokumentációval és egy példajelenettel kell rendelkeznie.
Ha készen áll a funkció MRTK-jának fokozatos lekérésére, hozzon létre egy problémát, amely alapján ellenőrizheti a lekéréses kérelmet. A lekéréses kérelemnek tartalmaznia kell minden olyan dolgot, ami ahhoz szükséges, hogy ez egy alapvető funkció legyen: tesztek, dokumentáció és egy használati példát bemutató jelenet.
Emellett ne felejtse el frissíteni a névtereket a "Kísérleti" altér eltávolításához.