Assemblies och asmdef-filer
↑Snabböversikt
Section titled “Snabböversikt”En assembly är en kompilerad .NET-enhet. Unity lägger som standard många skript i fördefinierade assemblies. En Assembly Definition (.asmdef) låter dig dela upp projektet i separata assemblies med tydliga referenser. Det hjälper struktur och tester, men betyder inte att varje projekt automatiskt blir snabbare.
Hur hänger det ihop?
Section titled “Hur hänger det ihop?”En .asmdef bestämmer vilken assembly som kompilerar skripten i dess mapp och undermappar, såvida inte en annan definition tar över längre ned. En namnrymd styr däremot typnamn och inte kompileringen.
DirectoryAssets/
DirectoryScripts/
DirectoryGameplay/
- HCSTech.Gameplay.asmdef
- Health.cs
- Inventory.cs
DirectoryUI/
- HCSTech.UI.asmdef
- InventoryView.cs
DirectoryEditor/
- HCSTech.Editor.asmdef
- BuildTools.cs
UI kan behöva referera Gameplay, men ren spellogik bör helst inte bero på UI. Då blir den enklare att testa separat.
Skapa en asmdef
Section titled “Skapa en asmdef”- Högerklicka på mappen i Unity och välj Create > Scripting > Assembly Definition.
- Ge den ett stabilt namn, till exempel
HCSTech.Gameplay. - Lägg till rätt Assembly Definition References i andra assemblies som behöver använda koden.
- Lägg editorkod i en editorassembly med lämpliga plattformsinställningar.
- Kompilera, kör tester och starta Play mode för att upptäcka saknade beroenden.
Vanliga problem
Section titled “Vanliga problem”| Symptom | Möjlig orsak | Kontrollera |
|---|---|---|
| En klass hittas inte | Saknad assembly-referens | Referenser och plattformsfilter |
| Två assemblies kräver varandra | Cirkulärt beroende | Flytta gemensamma kontrakt |
| Tester kommer inte åt intern kod | Åtkomstgräns | Publikt beteende och teststruktur |
| Editorkod felar i en build | Fel plattform | Editorassembly och villkorlig kompilering |
En assembly kan innehålla flera namnrymder, och samma namnrymd kan finnas i flera assemblies. Läs Namnrymder för att förstå skillnaden.
