🎮
Unity snabbreferens
  • Unity snabbreferens
  • Installation & setup
  • Kompilera och distribuera
  • Unity och git
  • Grundläggande koncept
    • Begrepp
    • Ett Unityprojekts uppbyggnad
    • Prefabs och instanser
    • Komponenter
    • Scener
    • MonoBehavior
    • Lager och taggar
    • Knappar och axlar
  • Grundfunktioner
    • Debug och gizmos
    • Datatyper och synlighet
    • Input
      • Action-based Input System
    • Flytta och rotera
    • Kollisioner
    • Skapa och förstör
    • Hitta spelobjekt
    • Beständig data
    • Slump
    • Fysik (2D och 3D)
      • Raycasting*
    • UI och Canvas*
    • Importera grafik*
      • Sprite editor*
    • Unity Events
    • Invoke, Couroutines
    • Animationer*
      • AnimationClip*
      • Animator Controller*
  • Andra funktioner
    • Tilemaps*
    • Asset Store
      • Användbara Assets
    • Package manager
    • Meddelanden
    • CharacterController
    • Scriptable objects*
  • Tilläggspaket
    • AI-Navmesh*
    • Mirror (nätverk)
    • XR Toolkit
      • Controllers
      • Interaktion*
      • Device Simulator
      • Teleportation
      • Meta Quest 2/3
      • 3D-modeller*
    • MRTK3 (HoloLens 2)
      • Grundkoncept*
      • Simulering
      • Interaktion*
      • Röststyrning
      • UI/UX och Canvas*
      • Spatial awareness*
      • Deployment*
    • MRTK2 (Hololens 1)
    • ProBuilder
  • Tekniker
    • Påverka andra objekt*
    • Rutnät*
Powered by GitBook
On this page
  • Instantiate
  • Bestämma position och rotation
  • Att använda objektet efter att det skapats
  • Destroy

Was this helpful?

  1. Grundfunktioner

Skapa och förstör

PreviousKollisionerNextHitta spelobjekt

Last updated 4 years ago

Was this helpful?

Instantiate

För att skapa en kopia av ett GameObject används Instantiate.

Instantiate(somePrefab);

Ofta används denna för att skapa kopior av prefabs. Då deklarerar man en GameObject-variabel som public eller använder . Sedan använder man Unitys editor, och inspectorn, för att göra så att variabeln länkar till prefaben i Assets.

[SerializeField]
GameObject somePrefab;

Bestämma position och rotation

Det finns flera varianter av metoden Instantiate. Vilken version som används beror på vilka parametervärden som anges.

En av de vanligaste är den som anropas när man anger en Vector3 och en Quaternion. Då används vektorn som position för det nya objektet och quaternionen som rotation.

Instantiate(somePrefab, new Vector3(1, 3, 0), Quaternion.identity);

I exemplet ovan placeras det nya objektet på x=1, y=3, z=0.

För att placera det skapade objektet på samma plats som det objekt som skapar det, till exempel om man vill skapa en projektil som avfyras från spelarens rymdskepp, så kan man givetvis använda trandsform.position, som ju är en vektor som beskriver objektets egen position.

Instantiate(somePrefab, transform.position, Quaternion.identity);

I exemplen ovan används Quaternion.identity för rotation. Identity är en färdig Quaternion som är neutral - motsvarigheten till Vector3.zero.

Att använda objektet efter att det skapats

Ofta vill man göra saker med det nya objektet efter att det skapats. Ett vanligt exempel är att man vill ändra dess parent, dvs lägga in det som child-objekt till det nuvarande. På så vis får man ju en snygg hierarkisk struktur.

Turligt nog returnerar Instantiate-metoden en referens till det nyskapade objektet.

GameObject newThing = Instantiate(somePrefab, 
  transform.position, Quaternion.identity);

newThing.transform.SetParent(this.transform);

Destroy

För att förstöra ett spelobjekt används Destroy.

Destroy(this.gameObject);

Denna kod förstör det spelobjekt som det här scriptet sitter fast vid.

Man kan också påverka andra spelobjekt.

GameObject g = GameObject.Find("Door");
if (g != null)
{
  Destroy(g);
}

Letar rätt på spelobjektet med namnet "Door" och förstör det, om det finns.

private void OnTriggerEnter2D(Collider other)
{
  if (other.gameObject.tag == "Door")
  {
    Destroy(other.gameObject);
  }
}

När det här objektet kolliderar med ett objekt som har en trigger-collider, kolla om det objektet har taggen "Door", och förstör det i så fall.

överlagrade
SerializeField