Mae undod yn blatfform sydd wedi bod o gwmpas ers cryn amser ac sy'n esblygu'n gyson. Fodd bynnag, wrth weithio ynddo gyda nifer o brosiectau ar yr un pryd, gallwch ddod ar draws anawsterau o hyd wrth ddefnyddio ffynonellau cyffredin (.cs), llyfrgelloedd (.dll) ac asedau eraill (delweddau, synau, modelau, tai parod). Yn yr erthygl hon byddwn yn siarad am ein profiad gyda datrysiad brodorol i broblem o'r fath ar gyfer Unity.
Dulliau Rhannu Adnoddau
Mae mwy nag un ffordd o ddefnyddio adnoddau a rennir ar gyfer gwahanol brosiectau, ond mae gan bob dull ei fanteision a'i anfanteision.
1. Dyblygu - rydym yn dyblygu adnoddau rhwng prosiectau βΓ’ llaw.β
Manteision:
- Yn addas ar gyfer pob math o adnoddau.
- Dim problemau dibyniaeth.
- Nid oes unrhyw broblemau gyda GUIDs asedau.
Cons:
- Storfeydd anferth.
- Nid oes unrhyw bosibilrwydd o fersiwn.
- Anhawster olrhain newidiadau i adnoddau a rennir.
- Anhawster diweddaru adnoddau a rennir.
2.
Manteision:
- Gallwch weithio gyda'r ffynonellau.
- Gallwch ddosbarthu asedau.
- Dim problemau dibyniaeth.
Cons:
- Profiad Git yn ofynnol.
- Nid yw Git yn gyfeillgar iawn gyda ffeiliau deuaidd - bydd yn rhaid i chi gysylltu LFS.
- Rheolaeth mynediad ar gyfer cadwrfeydd.
- Anhawster gydag uwchraddio ac israddio fersiynau.
- Mae gwrthdrawiadau GUID yn bosibl ac nid oes ymddygiad clir ar ran Unity i'w datrys.
3. NuGet - dosbarthu llyfrgelloedd a rennir trwy becynnau NuGet.
Manteision:
- Gwaith cyfleus gyda phrosiectau nad ydynt yn dibynnu ar Undod.
- Fersiynau cyfleus a datrysiad dibyniaeth.
Cons:
- Ni all Unity weithio gyda phecynnau NuGet allan o'r bocs (ar GitHub gallwch ddod o hyd i NuGet Package Manager for Unity, sy'n trwsio hyn, ond mae rhai arlliwiau).
- Anawsterau wrth ddosbarthu mathau eraill o asedau.
4. Rheolwr Pecyn Undod - dosbarthu adnoddau a rennir trwy ddatrysiad brodorol ar gyfer Unity.
Manteision:
- Rhyngwyneb brodorol ar gyfer gweithio gyda phecynnau.
- Amddiffyniad rhag trosysgrifo ffeiliau .meta mewn pecynnau oherwydd gwrthdaro GUID.
- Posibilrwydd o fersiynu.
- Y gallu i ddosbarthu pob math o adnoddau ar gyfer Undod.
Cons:
- Gall gwrthdaro GUID ddigwydd o hyd.
- Nid oes unrhyw ddogfennaeth ar gyfer gweithredu.
Mae gan y dull olaf fwy o fanteision nag anfanteision. Fodd bynnag, nid yw'n boblogaidd iawn nawr oherwydd y diffyg dogfennaeth, ac felly byddwn yn canolbwyntio arno'n fanwl.
Rheolwr Pecyn Undod
Offeryn rheoli pecynnau yw Unity Package Manager (UPM). Fe'i ychwanegwyd yn Unity 2018.1 a dim ond ar gyfer pecynnau a ddatblygwyd gan Unity Technologies y cafodd ei ddefnyddio. Fodd bynnag, gan ddechrau gyda fersiwn 2018.3, daeth yn bosibl ychwanegu pecynnau arferol.
Rhyngwyneb Rheolwr Pecyn Undod
Nid yw'r pecynnau yn y pen draw yn ffynonellau'r prosiect (cyfeiriadur Asedau). Maent mewn cyfeiriadur ar wahΓ’n %projectFolder%/Library/PackageCache
ac nad ydynt yn effeithio ar y prosiect mewn unrhyw ffordd, mae eu hunig sΓ΄n yn y cod ffynhonnell yn y ffeil packages/manifest.json
.
Pecynnau yn system ffeiliau'r prosiect
Ffynonellau pecyn
Gall UPM ddefnyddio sawl ffynhonnell pecyn:
1. System ffeil.
Manteision:
- Cyflymder gweithredu.
- Nid oes angen offer trydydd parti.
Cons:
- Anhawster wrth fersiynu.
- Mae angen mynediad a rennir i'r system ffeiliau ar gyfer pawb sy'n gweithio gyda'r prosiect.
2. Ystorfa git.
Manteision:
- Y cyfan sydd ei angen arnoch yw ystorfa Git.
Cons:
- Ni allwch newid rhwng fersiynau trwy'r ffenestr UPM.
- Nid yw'n gweithio gyda holl gadwrfeydd Git.
3. ystorfa npm.
Manteision:
- Yn cefnogi ymarferoldeb UPM yn llawn ac yn cael ei ddefnyddio i ddosbarthu pecynnau Unity swyddogol.
Cons:
- Ar hyn o bryd yn anwybyddu pob fersiwn llinynnol o becynnau ac eithrio "-preview".
Isod byddwn yn edrych ar weithrediad UPM + npm. Mae'r bwndel hwn yn gyfleus oherwydd ei fod yn caniatΓ‘u ichi weithio gydag unrhyw fath o adnoddau a rheoli fersiynau pecyn, ac mae hefyd yn cefnogi'r rhyngwyneb UPM brodorol yn llawn.
Gallwch ei ddefnyddio fel ystorfa npm
Sefydlu'r amgylchedd
Yn gyntaf mae angen i chi osod
Creu pecyn
I greu pecyn, mae angen i chi osod y ffeil package.json
, a fydd yn ei ddisgrifio, i'r cyfeiriadur gyda chynnwys y pecyn hwn. Mae angen i chi wneud y canlynol:
Ewch i'r cyfeiriadur prosiect yr ydym am wneud pecyn.
Rhedeg y gorchymyn init npm a nodi'r gwerthoedd gofynnol yn ystod yr ymgom. Ar gyfer enw, nodwch yr enw mewn fformat parth gwrthdro, er enghraifft com.plarium.somepackage.
I arddangos enw'r pecyn yn gyfleus, ychwanegwch yr eiddo displayName at package.json a'i lenwi.
Gan fod npm yn canolbwyntio ar js, mae'r ffeil yn cynnwys y prif briodweddau a'r nodweddion sgriptiau nad oes eu hangen arnom, nad yw Unity yn eu defnyddio. Mae'n well cael gwared arnynt er mwyn peidio ag annibendod disgrifiad y pecyn. Dylai'r ffeil edrych rhywbeth fel hyn:
- Ewch i'r cyfeiriadur prosiect yr ydym am wneud pecyn.
- Rhedeg y gorchymyn init npm a nodi'r gwerthoedd gofynnol yn ystod yr ymgom. Ar gyfer enw, nodwch yr enw mewn fformat parth gwrthdro, er enghraifft com.plarium.somepackage.
- I arddangos enw'r pecyn yn gyfleus, ychwanegwch yr eiddo displayName at package.json a'i lenwi.
- Gan fod npm yn canolbwyntio ar js, mae'r ffeil yn cynnwys y prif briodweddau a'r nodweddion sgriptiau nad oes eu hangen arnom, nad yw Unity yn eu defnyddio. Mae'n well cael gwared arnynt er mwyn peidio ag annibendod disgrifiad y pecyn. Dylai'r ffeil edrych rhywbeth fel hyn:
{ "name": "com.plarium.somepackage", "displayName": "Some Package", "version": "1.0.0", "description": "Some Package Description", "keywords": [ "Unity", "UPM" ], "author": "AUTHOR", "license": "UNLICENSED" }
- Agor Unity a chynhyrchu ffeil .meta ar gyfer package.json (nid yw Unity yn gweld asedau heb ffeiliau .meta, mae pecynnau ar gyfer Unity yn cael eu hagor yn ddarllenadwy yn unig).
Anfon pecyn
I anfon y pecyn mae angen i chi redeg y gorchymyn: npm publish --registry *Π°Π΄ΡΠ΅Ρ Π΄ΠΎ Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ° ΠΏΠ°ΠΊΠ΅ΡΠΎΠ²*
.
Gosod a diweddaru pecynnau trwy Unity Package Manager
I ychwanegu pecyn at brosiect Unity, mae angen:
- Ychwanegu at ffeil
manifest.json
gwybodaeth am ffynhonnell y pecynnau. I wneud hyn mae angen ichi ychwanegu'r eiddoscopedRegistries
a nodi'r cwmpasau a'r cyfeiriad ffynhonnell lle bydd cwmpasau penodol yn cael eu chwilio."scopedRegistries": [ { "name": "Main", "url": "Π°Π΄ΡΠ΅Ρ Π΄ΠΎ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ° ΠΏΠ°ΠΊΠ΅ΡΠΎΠ²", "scopes": [ "com.plarium" ] } ]
- Ewch i Unity ac agorwch ffenestr y Rheolwr Pecyn (nid yw gweithio gyda phecynnau arfer yn wahanol i weithio gyda rhai adeiledig).
- Dewiswch Pob Pecyn.
- Dewch o hyd i'r pecyn sydd ei angen arnoch a'i ychwanegu.
Gweithio gyda ffynonellau a dadfygio
Er mwyn i'r ffynonellau gael eu cysylltu Γ’'r prosiect, mae angen i chi greu
Nid yw defnyddio pecynnau yn cyfyngu ar eich opsiynau dadfygio. Fodd bynnag, wrth weithio gyda phecynnau yn Unity, ni allwch fynd i'r IDE trwy glicio ar wall yn y consol os digwyddodd y gwall yn y pecyn. Mae hyn oherwydd y ffaith nad yw Unity yn gweld sgriptiau fel ffeiliau ar wahΓ’n, oherwydd wrth ddefnyddio'r Diffiniad Cynulliad maent yn cael eu casglu i lyfrgell a'u cynnwys yn y prosiect. Wrth weithio gyda ffynonellau o brosiect, mae clicio ar y DRhA ar gael.
Sgript mewn prosiect gyda phecyn cysylltiedig:
Sgript o'r pecyn gyda thorbwynt gweithio:
Atebion brys i becynnau
Mae pecynnau undod a ychwanegir at brosiect yn ddarllenadwy yn unig, ond gellir eu golygu yn y storfa pecyn. I wneud hyn mae angen:
- Ewch i'r pecyn mewn storfa pecyn.
- Gwnewch y newidiadau angenrheidiol.
- Diweddaru'r fersiwn yn y ffeil
package.json
. - Anfon pecyn
npm publish --registry *Π°Π΄ΡΠ΅Ρ Π΄ΠΎ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ° ΠΏΠ°ΠΊΠ΅ΡΠΎΠ²*
. - Diweddarwch y fersiwn pecyn i'r un wedi'i gywiro trwy'r rhyngwyneb UPM.
Gwrthdaro mewnforio pecyn
Gall y gwrthdaro GUID canlynol ddigwydd wrth fewnforio pecynnau:
- Pecyn - pecyn. Os, wrth fewnforio pecyn, y darganfyddir bod pecynnau sydd eisoes wedi'u hychwanegu yn cynnwys asedau gyda'r un GUID, ni fydd asedau gyda GUIDs cyfatebol o'r pecyn a fewnforiwyd yn cael eu hychwanegu at y prosiect.
- Mae pecyn yn brosiect. Os, wrth fewnforio pecyn, y darganfyddir bod y prosiect yn cynnwys asedau gyda GUIDs cyfatebol, yna ni fydd yr asedau o'r pecyn yn cael eu hychwanegu at y prosiect. Fodd bynnag, bydd asedau sy'n dibynnu arnynt yn dechrau defnyddio asedau o'r prosiect.
Trosglwyddo asedau o brosiect i becyn
Os byddwch yn trosglwyddo ased o brosiect i becyn tra bod Unity ar agor, bydd ei ymarferoldeb yn cael ei gadw, a bydd dolenni mewn asedau dibynnol yn dechrau defnyddio'r ased o'r pecyn.
Mae'n bwysig: Wrth gopΓ―o ased o brosiect i becyn, bydd y gwrthdaro βPecyn - Prosiectβ a ddisgrifir yn yr adran uchod yn digwydd.
Atebion posibl i wrthdaro
- Ailbennu GUIDs gan ddefnyddio ein algorithmau ein hunain wrth fewnforio'r holl asedau i ddileu gwrthdrawiadau.
- Ychwanegu'r holl asedau at un prosiect ac yna eu rhannu'n becynnau.
- Creu cronfa ddata sy'n cynnwys GUIDs yr holl asedau a chynnal dilysiad wrth anfon pecynnau.
Casgliad
Mae UPM yn ddatrysiad newydd ar gyfer dosbarthu adnoddau a rennir yn Unity, a all fod yn ddewis arall teilwng i ddulliau presennol. Roedd yr argymhellion a ddisgrifir yn yr erthygl yn seiliedig ar achosion go iawn. Gobeithio y byddwch yn eu cael yn ddefnyddiol.
Ffynhonnell: hab.com