Eenheid Werken met Prefabs

Prefabs zijn speciale middelen waarmee ontwikkelaars GameObjects samen met hun componenten en andere gegevens kunnen opslaan in configureerbare sjablonen, die later kunnen worden hergebruikt tussen de scènes en andere projecten, of kunnen worden geïnstantieerd via een script, zonder ze te hoeven configureren opnieuw.

Gevallen waarin prefabs nuttig zijn:

  • Milieuactiva (bomen, struiken, rotsen, enz.)
  • NPC's (niet-spelerpersonages)
  • Projectielen
  • Spelerinstanties
  • Alle objecten die in het spel opnieuw moeten worden gebruikt

Voorbeeld gebruik

Wanneer u modellen rechtstreeks naar de scène sleept en neerzet, treden er vaak enkele problemen op, zoals:

  • Ontbrekende texturen
  • Verkeerde schaal
  • Verkeerde rotatie

Boommodel met standaardmateriaal

De bovenstaande problemen kunnen eenvoudig worden opgelost in de scène (toewijzen van het juiste materiaal, wijzigen van de schaal/rotatie, enz.):

Boommodel met het juiste materiaal

Als u echter van plan bent het model herhaaldelijk en/of in verschillende scènes te gebruiken, zal het herhalen van de bovenstaande stappen snel een vervelende klus worden. In plaats daarvan kunnen we het model opslaan in een prefab.

Hoe u een prefab maakt

  • Om een ​​prefab te maken in Unity, sleept u het object eenvoudigweg vanuit de scèneweergave naar de projectweergave.

Unity 3D Maak een prefab

  • Nadat de Prefab is gemaakt, kan deze in elke scène worden geplaatst, waardoor een exacte kopie ontstaat:

Unity prefab projectweergave

Prefabs bewerken

Het bewerken van bestaande Prefabs gebeurt op 2 manieren: door ze aan te passen in de Prefab-editor of door ze aan te passen in de Scene.

Aanpassen in de Prefab Editor

  • Selecteer het Prefab in de Projectweergave en klik vervolgens in de Inspector View "Open Prefab"

  • De Prefab wordt geopend in de editor, waar u deze kunt aanpassen.

  • Wanneer u klaar bent met wijzigen, klikt u op de pijl Terug in de Hiërarchieweergave om het bewerken af ​​te sluiten en de wijzigingen op te slaan.

Unity 3D Prefab-wijzigingen opslaan (methode 1)

Aanpassen in de scène

  • Zet het prefab neer in de scèneweergave en bewerk het daar.

  • In mijn geval heb ik nog een object aan de hiërarchie toegevoegd (let op het (+) symbool naast het pictogram)
  • Wanneer u prefabs in de scène wijzigt, worden de wijzigingen niet automatisch opgeslagen. In plaats daarvan moet u handmatig het hoofdobject van de prefab selecteren en in Inspector View op "Overrides" klikken en vervolgens op "Apply All" klikken om de wijzigingen op te slaan., of "Revert All" om de wijzigingen ongedaan te maken.

  • Sommige acties worden niet ondersteund bij het rechtstreeks in de scène bewerken van Prefab. Als u bijvoorbeeld de hiërarchie moet herstructureren, krijgt u het bericht "Cannot restructure Prefab instance" te zien en opties voor "Open Prefab" of "Cancel".

Om de Prefab-instantie te herstructureren, klikt u op 'Open Prefab' of klikt u met de rechtermuisknop op de prefab in de hiërarchieweergave en klikt u vervolgens op Prefab -> Uitpakken of Prefab -> Volledig uitpakken.

Als u Prefab uitpakt, wordt de associatie met het hoofdprefab verwijderd, waardoor het volledig bewerkbaar wordt in de scène.

Om het uitgepakte Prefab weer op te slaan, selecteert u de map waarin het originele Prefab zich bevindt en sleept u vervolgens het gewijzigde object vanuit de Hiërarchieweergave naar dat Prefab.

Unity 3D Prefab-wijzigingen opslaan (methode 2)

Soms, als de wijzigingen te ingrijpend zijn, krijgt u een bevestigingsbericht te zien.

Zorg ervoor dat u nogmaals controleert of u de juiste Prefab aanpast en klik vervolgens op "Replace Anyway" om de actie af te ronden of op "Niet vervangen" om de actie te annuleren.

Unity 3D Prefab vervangen Bevestigingsbericht

De nieuwe Prefab is nu opgeslagen en klaar voor gebruik.

Voorgestelde artikelen
Hoe bomen op terrein in eenheid te schilderen
Assetbundelgebruik in eenheid
Kies in eenheid de juiste Skybox voor uw omgeving
Procedurele wereldgeneratie in eenheid
Onmisbare middelen voor algemene doeleinden voor eenheid
Het implementeren van Object-Oriented Programming (OOP)-concepten in eenheid
Een interactief menusysteem in eenheid bouwen