Vytvorenie objektu na základe paneláka zo skriptu
Prostredie overovania
- Windows
-
- Windows 11
- Editor jednoty
-
- 2021.3.3f1
- Vstupný systémový balík
-
- 1.3.0
Predpoklady pre tento tip
Nasledujúce nastavenia boli vykonané vopred ako predpoklad pre popis tohto tipu.
Vytvorenie objektu na základe paneláka v skripte
V predchádzajúcich tipoch sme umiestnili objekty z paneláka na výhľad, ale v tomto prípade umiestnime vopred určený počet objektov a spustíme hru. Niektoré hry však môžu chcieť počas hry pridávať objekty dynamicky. V takom prípade ho budete musieť pridať z paneláka v skripte.
Vytvorenie ukážky
Po nasadení nového projektu umiestnite tlačidlo. Pokúsme sa vygenerovať objekt z paneláka zakaždým, keď klikneme na tlačidlo.
Vytvorte panelák. Toto je rovnaký postup ako predchádzajúce tipy.
Vytvorte skript na pridanie objektu pri ďalšom kliknutí na tlačidlo. ButtonEvent
Názov ponechajte ako .
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
Definujte pole tak, aby ste mohli vopred nastaviť, ktorý panelák sa má vygenerovať.
Instantiate
Môžete odovzdať metódu na vytvorenie nového objektu na základe tohto objektu GameObject
.
Poloha vytvoreného objektu sa stáva pôvodom a bez ohľadu na to, koľko objektov je vytvorených, objekty sa prekrývajú a je ťažké ju pochopiť, takže pozícia sa po vytvorení nastaví náhodne. Hodnota nastavenia polohy je vhodná, pretože ide o vzorku.
Pripojte skript k EventSystem.
GameObject
je nastavený, takže tu vyhoďte panelák.
Po kliknutí na tlačidlo sa metóda OnClick
vyvolá.
Vykonanie vzorky
Po vytvorení spustite hru a kliknite na tlačidlo. Každé kliknutie by malo vygenerovať objekt.
Samozrejme, keďže sa generuje na základe paneláka, ak sa zmení hodnota prefabrikátu, vygenerovaný objekt sa vygeneruje podľa tejto hodnoty.