Inite se yon platfòm ki egziste depi kèk tan epi ki toujou ap evolye. Sepandan, lè w ap travay nan li ak plizyè pwojè an menm tan, ou ka toujou rankontre difikilte nan itilize sous komen (.cs), bibliyotèk (.dll) ak lòt byen (imaj, son, modèl, prefab). Nan atik sa a nou pral pale sou eksperyans nou ak yon solisyon natif natal nan yon pwoblèm konsa pou Inite.
Metòd Distribisyon Resous Pataje
Gen plis pase yon fason pou itilize resous pataje pou diferan pwojè, men chak apwòch gen avantaj ak dezavantaj li yo.
1. Duplication - nou kopi resous ant pwojè "amen."
Pou:
- Apwopriye pou tout kalite resous.
- Pa gen pwoblèm depandans.
- Pa gen pwoblèm ak GUID avantaj yo.
Kont:
- Depo jeyan.
- Pa gen okenn posiblite pou vèsyon.
- Difikilte pou swiv chanjman nan resous pataje yo.
- Difikilte pou mete ajou resous pataje yo.
2.
Pou:
- Ou ka travay ak sous yo.
- Ou ka distribye byen.
- Pa gen pwoblèm depandans.
Kont:
- Git eksperyans obligatwa.
- Git pa trè zanmitay ak dosye binè - ou pral oblije konekte LFS.
- Aksè kontwòl pou depo.
- Difikilte pou amelyore ak desann vèsyon yo.
- Kolizyon GUID posib epi pa gen okenn konpòtman klè sou pati Unity pou rezoud yo.
3. NuGet - distribisyon bibliyotèk pataje atravè pakè NuGet.
Pou:
- Travay pratik ak pwojè ki pa depann de Inite.
- Pratik vèsyon ak rezolisyon depandans.
Kont:
- Inite pa ka travay ak pakè NuGet soti nan bwat la (sou GitHub ou ka jwenn Manadjè pake NuGet pou Unity, ki fikse sa a, men gen kèk nuans).
- Difikilte pou distribye lòt kalite byen.
4. Manadjè pake Inite - distribisyon resous pataje atravè yon solisyon natif natal pou Inite.
Pou:
- Entèfas natif natal pou travay ak pakè.
- Pwoteksyon kont ranplase fichye .meta nan pakè akòz konfli GUID.
- Posiblite pou vèsyon.
- Kapasite pou distribye tout kalite resous pou Inite.
Kont:
- Konfli GUID ka toujou rive.
- Pa gen okenn dokiman pou aplikasyon an.
Dènye metòd la gen plis avantaj pase dezavantaj. Sepandan, li pa trè popilè kounye a akòz mank nan dokiman, ak Se poutèt sa nou pral rete sou li an detay.
Manadjè pake Inite
Manadjè Pakè Inite (UPM) se yon zouti jesyon pake. Li te ajoute nan Unity 2018.1 e li te itilize sèlman pou pakè ke Unity Technologies te devlope. Sepandan, kòmanse ak vèsyon 2018.3, li te vin posib pou ajoute pakè koutim.
Entèfas Manadjè Pake Inite
Pakè yo pa fini nan sous pwojè yo (Anyè Byen). Yo nan yon anyè separe %projectFolder%/Library/PackageCache
epi yo pa afekte pwojè a nan okenn fason, sèlman mansyone yo nan kòd sous la se nan dosye a packages/manifest.json
.
Pakè nan sistèm dosye pwojè a
Sous pake
UPM ka itilize plizyè sous pake:
1. File sistèm.
Pou:
- Vitès aplikasyon an.
- Pa mande pou zouti twazyèm pati.
Kont:
- Difikilte nan vèsyon.
- Aksè pataje nan sistèm dosye a obligatwa pou tout moun k ap travay ak pwojè a.
2. Git depo.
Pou:
- Tout sa ou bezwen se yon depo Git.
Kont:
- Ou pa ka chanje ant vèsyon atravè fenèt UPM la.
- Pa travay ak tout depo Git.
3. npm depo.
Pou:
- Sipòte totalman fonksyonalite UPM epi li itilize pou distribye pakè ofisyèl Inite yo.
Kont:
- Kounye a inyore tout vèsyon fisèl pakè eksepte "-preview".
Anba a nou pral gade aplikasyon UPM + npm. Pake sa a se pratik paske li pèmèt ou travay ak nenpòt kalite resous ak jere vèsyon pake, epi tou li konplètman sipòte koòdone natif natal UPM.
Ou ka itilize li kòm yon depo npm
Konfigirasyon anviwònman an
Premye ou bezwen enstale
Kreye yon pake
Pou kreye yon pake, ou bezwen mete dosye a package.json
, ki pral dekri li, nan anyè a ak sa ki nan pake sa a. Ou bezwen fè bagay sa yo:
Ale nan anyè pwojè a ke nou vle fè yon pake.
Kouri lòd npm init la epi antre valè yo mande yo pandan dyalòg la. Pou non, presize non an nan fòma domèn ranvèse, pou egzanp com.plarium.somepackage.
Pou fasilman montre non pake a, ajoute pwopriyete displayName nan package.json epi ranpli li.
Depi npm se js-oryante, dosye a gen pwopriyete prensipal yo ak scripts ke nou pa bezwen, ki Unity pa itilize. Li pi bon yo retire yo pou yo pa ankonbre deskripsyon pake a. Fichye a ta dwe gade yon bagay tankou sa a:
- Ale nan anyè pwojè a ke nou vle fè yon pake.
- Kouri lòd npm init la epi antre valè yo mande yo pandan dyalòg la. Pou non, presize non an nan fòma domèn ranvèse, pou egzanp com.plarium.somepackage.
- Pou fasilman montre non pake a, ajoute pwopriyete displayName nan package.json epi ranpli li.
- Depi npm se js-oryante, dosye a gen pwopriyete prensipal yo ak scripts ke nou pa bezwen, ki Unity pa itilize. Li pi bon yo retire yo pou yo pa ankonbre deskripsyon pake a. Fichye a ta dwe gade yon bagay tankou sa a:
{ "name": "com.plarium.somepackage", "displayName": "Some Package", "version": "1.0.0", "description": "Some Package Description", "keywords": [ "Unity", "UPM" ], "author": "AUTHOR", "license": "UNLICENSED" }
- Louvri Unity epi jenere yon fichye .meta pou package.json (Unity pa wè byen san fichye .meta, pakè pou Unity yo louvri pou lekti sèlman).
Voye yon pake
Pou voye pake a ou bezwen kouri lòd la: npm publish --registry *адрес до хранилища пакетов*
.
Enstale ak mete ajou pakè atravè Manadjè pake Unity
Pou ajoute yon pake nan yon pwojè Unity, ou bezwen:
- Ajoute nan dosye
manifest.json
enfòmasyon sou sous pakè yo. Pou fè sa ou bezwen ajoute pwopriyete ascopedRegistries
epi endike sijè ki abòde yo ak adrès sous la kote yo pral chèche sijè espesifik yo."scopedRegistries": [ { "name": "Main", "url": "адрес до хранилища пакетов", "scopes": [ "com.plarium" ] } ]
- Ale nan Inite epi ouvri fenèt Manadjè Pakè a (k ap travay ak pakè koutim pa diferan de travay ak pakè ki entegre yo).
- Chwazi tout pakè yo.
- Jwenn pake ou bezwen an epi ajoute li.
Travay ak sous ak debogaj
Nan lòd pou sous yo dwe konekte ak pwojè a, ou bezwen kreye
Sèvi ak pakè pa limite opsyon debogaj ou yo. Sepandan, lè w ap travay ak pakè nan Unity, ou pa ka ale nan IDE a lè w klike sou yon erè nan konsole a si erè a te fèt nan pake a. Sa a se akòz lefèt ke Unity pa wè scripts kòm dosye separe, depi lè w ap itilize Definisyon Asanble a yo kolekte nan yon bibliyotèk epi yo enkli nan pwojè a. Lè w ap travay ak sous ki soti nan yon pwojè, klike sou IDE a disponib.
Script nan yon pwojè ak yon pake konekte:
Script ki soti nan pake a ak yon breakpoint k ap travay:
Korije ijan pou pakè yo
Pakè Inite yo ajoute nan yon pwojè yo lekti sèlman, men yo ka modifye nan kachèt pake a. Pou fè sa ou bezwen:
- Ale nan pake nan kachèt pake.
- Fè chanjman ki nesesè yo.
- Mizajou vèsyon an nan dosye a
package.json
. - Voye pake
npm publish --registry *адрес до хранилища пакетов*
. - Mete ajou vèsyon pake a nan yon sèl korije atravè koòdone UPM la.
Konfli enpòte pake
Konfli GUID sa yo ka rive lè w ap enpòte pakè yo:
- Pake - pake. Si, lè w ap enpòte yon pake, yo dekouvri pakè ki te deja ajoute yo genyen byen ki gen menm GUID, yo p ap ajoute nan pwojè a byen ki gen GUID ki koresponn ak pakè enpòte a.
- Yon pake se yon pwojè. Si, lè w ap enpòte yon pake, li dekouvri ke pwojè a gen byen ki gen GUID matche, Lè sa a, byen ki soti nan pake a pa pral ajoute nan pwojè a. Sepandan, byen ki depann de yo pral kòmanse itilize byen ki soti nan pwojè a.
Transfere byen ki soti nan yon pwojè nan yon pake
Si w transfere yon avantaj nan yon pwojè nan yon pake pandan Inite louvri, fonksyonalite li yo pral konsève, ak lyen nan byen depandan yo ap kòmanse sèvi ak avantaj ki soti nan pake a.
Li enpòtan: Lè w ap kopye yon avantaj ki soti nan yon pwojè nan yon pake, konfli "Pake - Pwojè" ki dekri nan seksyon ki anwo a pral rive.
Solisyon posib pou konfli
- Reasiyen GUID yo lè l sèvi avèk pwòp algoritm nou yo lè w ap enpòte tout byen yo pou elimine kolizyon yo.
- Ajoute tout byen nan yon pwojè epi divize yo an pakè.
- Kreye yon baz done ki gen GUID yo nan tout byen ak fè validation lè voye pakè.
Konklizyon
UPM se yon nouvo solisyon pou distribye resous pataje nan Inite, ki kapab yon altènatif merite pou metòd ki egziste deja. Rekòmandasyon ki dekri nan atik la te baze sou ka reyèl. Nou espere ou jwenn yo itil.
Sous: www.habr.com