unity3d 如何在特定时间内生成游戏对象?

mfuanj7w  于 2023-04-07  发布在  其他
关注(0)|答案(1)|浏览(151)

我创建了一个定时器倒计时脚本。当说的时间达到一定的时间,我想示例化和产卵预制。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class TimerScript : MonoBehaviour
{
    [SerializeField] public GameObject PreFab;

    [SerializeField] private Vector3 spawnPosition;
    float x = 0;

    float y = 0;

    float z = 0;

    public float TimeLeft;
    public bool TimerOn = false;

    public Text TimerTxt;

    void Start()
    {
        
        TimerOn = true;
        
    }

    void Update()
    {
        if (TimerOn)
        {
            if (TimeLeft > 0)
            {
                TimeLeft -= Time.deltaTime;
                updateTimer(TimeLeft);
                
            }
            else
            {
                //Debug.Log("Time is UP!");
                TimeLeft = 0;
                TimerOn = false;
            }

           

        }
        if (TimeLeft <= 19.40)
        {

            Instantiate(PreFab, spawnPosition, Quaternion.identity); 
           
        }
    }

    void updateTimer(float currentTime)
    {
        currentTime += 1;

        float minutes = Mathf.FloorToInt(currentTime / 60);
        float seconds = Mathf.FloorToInt(currentTime % 60);

        TimerTxt.text = string.Format("{0:00}:{1:00}", minutes, seconds);
    }

Unity一直说预制件还没有被分配,但我序列化了它并分配了给定的预制件。我做错了什么?倒计时工作正常,没有问题。

bq3bfh9z

bq3bfh9z1#

你的问题肯定是由于没有定义这个变量的对象的草率的层次结构和声音造成的。下面的代码在任何情况下都有助于修复错误,并且还告诉了没有PreFab的对象的名称。

if (TimeLeft <= 19.40)
{
    if (PreFab)
    {
        Instantiate(PreFab, spawnPosition, Quaternion.identity);
    }
    else
    {
        Debug.Log($"{name} has not assigned PreFab.");
    }
}

相关问题