unity – Easy methods to show puzzle items throughout the UI panel upon the preliminary era

unity – Easy methods to show puzzle items throughout the UI panel upon the preliminary era

[ad_1]

How to make the first puzzle piece appear in the panel


public class Piecespawn : MonoBehaviour
{
    // Referensi ke objek skripable PieceList yang berisi daftar potongan puzzle
    public PieceList pieceList

    // Tingkat di mana potongan-potongan akan muncul (potongan per detik)
    public float spawnRate = 1f;

    // Array dari titik spawn di mana potongan-potongan akan diciptakan
    public GameObject[] spawnPoints;

    // Record untuk melacak potongan aktif dalam adegan
    non-public Record<GameObject> activePieces = new Record<GameObject>();

    // Begin dipanggil sebelum body pertama
    void Begin()
    {
        // Mulai coroutine untuk terus-menerus menciptakan potongan
        StartCoroutine(SpawnPiece());
    }

    // Coroutine untuk menciptakan potongan puzzle
    IEnumerator SpawnPiece()
    {
        // Terus-menerus menciptakan potongan tanpa batas
        whereas (true)
        {
            // Hentikan menciptakan jika semua titik spawn sudah terisi
            if (activePieces.Depend >= spawnPoints.Size)
            {
                yield return null;
                proceed;
            }

            // Pilih secara acak potongan puzzle dari daftar
            int randomIndex = Random.Vary(0, pieceList.Piecepuzzle.Depend);
            GameObject selectedPiece = pieceList.Piecepuzzle[randomIndex].shapeTriangle;

            // Bangkitkan indeks titik spawn acak, pastikan tidak ada yang sudah terisi
            int spawnPointIndex = Random.Vary(0, spawnPoints.Size);
            whereas (activePieces.Exists(piece => piece.remodel.localPosition == spawnPoints[spawnPointIndex].remodel.localPosition))
            {
                spawnPointIndex = Random.Vary(0, spawnPoints.Size);
            }

            // Ciptakan potongan yang dipilih di titik spawn yang dipilih
            GameObject spawnedPiece = Instantiate(selectedPiece, spawnPoints[spawnPointIndex].remodel.localPosition, Quaternion.id);
            activePieces.Add(spawnedPiece);

            // Tunggu sejumlah waktu tertentu sebelum mencoba menciptakan potongan lainnya
            yield return new WaitForSeconds(spawnRate);
        }
    }

    // OnDestroy dipanggil ketika occasion skrip dihancurkan
    non-public void OnDestroy()
    {
        // Hancurkan semua potongan aktif saat skrip dihancurkan
        foreach (GameObject piece in activePieces)
        {
            Destroy(piece);
        }
    }
}

[ad_2]

Comments

No comments yet. Why don’t you start the discussion?

Leave a Reply