Enhet som arbetar med prefabs

Prefabs är speciella tillgångar som gör det möjligt för utvecklare att lagra GameObjects tillsammans med deras komponenter och annan data i konfigurerbara mallar, som senare kan återanvändas mellan scenerna och andra projekt, eller instansieras via ett skript, utan att behöva konfigurera dem igen.

Fall där Prefabs är användbara:

  • Miljötillgångar (träd, buskar, stenar, etc.)
  • NPC:er (icke-spelare)
  • Projektiler
  • Spelarinstanser
  • Alla föremål som behöver återanvändas i spelet

Exempel användning

När du drar och släpper modeller direkt till scenen kommer de ofta att uppstå med vissa problem, till exempel:

  • Saknar texturer
  • Fel skala
  • Fel rotation

Trädmodell med standardmaterial

Problemen ovan kan enkelt fixas i scenen (tilldela rätt material, ändra skala/rotation, etc.):

Trädmodell med rätt material

Men om du planerar att använda modellen upprepade gånger och/eller i olika scener kommer det snabbt att bli en tråkig uppgift att upprepa stegen ovan, så istället kan vi spara modellen till en Prefab.

Hur man skapar en prefab

  • För att skapa en prefab i Unity, dra och släpp objektet från scenvyn till projektvyn.

Unity 3D Skapa en prefab

  • Efter att prefab har skapats kan den släppas i valfri scen och skapa en exakt kopia:

Unity Prefab Project View

Redigera prefabs

Redigera befintliga Prefabs görs på två sätt: genom att modifiera dem i Prefab-editorn eller genom att modifiera dem i scenen.

Modifierar i Prefab Editor

  • Välj Prefab i projektvyn och klicka sedan i inspektörsvyn "Open Prefab"

  • Prefab kommer att öppnas i editorn, där du kan ändra den.

  • När du är klar med ändringen klickar du på bakåtpilen i hierarkivyn för att avsluta redigeringen och spara ändringarna.

Unity 3D Spara prefab-ändringar (metod 1)

Modifierar i scenen

  • Släpp prefab i scenvyn och redigera den där.

  • I mitt fall har jag lagt till ett annat objekt till hierarkin (märk på symbolen (+) nära ikonen)
  • När du ändrar prefabs i scenen, sparas inte ändringarna automatiskt, istället måste du manuellt välja rotobjektet för prefab, och i inspektörsvy klicka på "Overrides" och klicka sedan på "Apply All" för att spara ändringarna, eller "Revert All" för att återställa ändringarna.

  • Vissa åtgärder stöds inte när du redigerar Prefab direkt i scenen, till exempel om du behöver strukturera om hierarkin kommer du att presenteras med meddelandet "Cannot restructure Prefab instance" och med alternativen till antingen "Open Prefab" eller "Cancel".

För att omstrukturera Prefab-instansen, klicka antingen på 'Open Prefab' eller högerklicka på prefab i hierarkivyn och klicka sedan på Prefab -> Packa upp eller Prefab -> Packa upp helt.

Uppackning av Prefab tar bort dess koppling till huvudprefab, vilket gör den fullt redigerbar i scenen.

För att spara tillbaka den uppackade prefab, välj mappen där den ursprungliga prefab finns, dra och släpp sedan det modifierade objektet från hierarkivyn till det prefab.

Unity 3D Spara prefab-ändringar (metod 2)

Ibland, om ändringarna är för drastiska, kommer du att få ett bekräftelsemeddelande.

Se till att dubbelkolla att du ändrar rätt Prefab och klicka sedan på "Replace Anyway" för att slutföra åtgärden eller "Ersätt inte" för att avbryta åtgärden.

Unity 3D Ersätt Prefab Confirm Message

Den nya Prefab är nu sparad och redo att användas.