Hoppa till innehåll

Assemblies och asmdef-filer

↑

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.

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.

  1. Högerklicka på mappen i Unity och välj Create > Scripting > Assembly Definition.
  2. Ge den ett stabilt namn, till exempel HCSTech.Gameplay.
  3. Lägg till rätt Assembly Definition References i andra assemblies som behöver använda koden.
  4. Lägg editorkod i en editorassembly med lämpliga plattformsinställningar.
  5. Kompilera, kör tester och starta Play mode för att upptäcka saknade beroenden.
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.