Skapa ett objekt baserat på en prefab från ett skript

Sidan uppdaterad :
Datum för skapande av sida :

Verifiering miljö

Windows
  • Fönster 11
Unity-redaktör
  • 2021.3.3F1
Paket för inmatningssystem
  • 1.3.0

Förutsättningar för det här tipset

Följande inställningar har gjorts i förväg som en förutsättning för beskrivningen av detta tips.

Skapa ett objekt baserat på en prefab i ett skript

I de tidigare tipsen placerade vi objekt från prefab till vyn, men i det här fallet placerar vi ett förutbestämt antal objekt och startar spelet. Vissa spel kanske vill lägga till objekt dynamiskt medan spelet körs. I så fall måste du lägga till det från prefab i skriptet.

Skapa exempel

När du har distribuerat det nya projektet placerar du knappen. Låt oss försöka generera ett objekt från prefab varje gång vi klickar på knappen.

Skapa en prefab. Detta är samma procedur som tidigare tips.

Skapa ett skript för att lägga till objektet nästa gång du klickar på knappen. ButtonEvent Lämna namnet som .

using UnityEngine;

public class ButtonEvent : MonoBehaviour
{
  [SerializeField] private GameObject SpritePrefab;

  public void OnClick()
  {
    // Instantiate にプレハブを渡すとそれをもとに新しいオブジェクトを生成する
    var obj = Instantiate(SpritePrefab);

    // 配置位置はランダムに
    obj.transform.localPosition = new Vector3(Random.value * 6 - 3, Random.value * 6 - 3);
  }
}

GameObject Definiera fältet så att du kan ställa in vilken prefab som ska genereras baserat på i förväg.

Instantiate Du kan skicka en metod för att skapa ett GameObject nytt objekt baserat på det objektet.

Positionen för det skapade objektet blir ursprunget, och oavsett hur många objekt som skapas överlappar objekten varandra och det är svårt att förstå, så positionen ställs in slumpmässigt efter skapandet. Positionsjusteringsvärdet är lämpligt eftersom det är ett prov.

Koppla skriptet till EventSystem.

GameObject är inställd så släpp prefab här.

När du klickar på knappen anropas OnClick metoden.

Exempel på körning

När du har skapat det kör du spelet och klickar på knappen. Varje klick ska generera ett objekt.

Naturligtvis, eftersom det genereras baserat på prefab, om värdet på prefab ändras, kommer det genererade objektet att genereras enligt det värdet.