让GameObject在有限的时间内出现和消失

本文关键字:消失 时间 GameObject | 更新日期: 2023-09-27 18:16:52

我试图让一个GameObject在有限的时间内出现和消失(让我们暂时把时间功能放在一边)。

结果如下:

using UnityEngine;
using System.Collections;
public class Enemy1Behavior : MonoBehaviour
{
    // Use this for initialization
    void Start ()
    {
    }
    // Update is called once per frame
    void Update ()
    {
        this.gameObject.SetActive(false); // Making enemy 1 invisible
        Debug.Log("Update called");
        DisappearanceLogic(gameObject);
    }
    private static void DisappearanceLogic(GameObject gameObject)
    {
        int num = 0;
        while (num >= 0)
        {
            if (num % 2 == 0)
            {
                 gameObject.SetActive(false);
            }
            else
            {
                 gameObject.SetActive(true);
            }
            num++;
        }
    }
}

现在当我点击Unity中的播放按钮时,程序只是不响应,我只能使用End Task从任务管理器中退出。

(是的,我知道在方法中有一个无限循环)。

所以我猜我做错了什么。什么是使GameobjectUnity中闪烁/闪烁/出现/消失的最佳方法?

谢谢。

让GameObject在有限的时间内出现和消失

你正在使用一个无限循环,它完全锁定了你的Update(),因为num总是大于0。

可以使用InvokeRepeating (http://docs.unity3d.com/ScriptReference/MonoBehaviour.InvokeRepeating.html)

public GameObject gameobj;
void Start()
{
    InvokeRepeating("DisappearanceLogic", 0, interval);
}
void DisappearanceLogic() 
{
     if(gameobj.activeSelf) 
     {
         gameobj.SetActive(false);
     }
     else
     {
         gameobj.SetActive(true);
     }
}

interval是一个浮点数,比如1f, 0.5f等等。

你可以制作动画眨眼等-动画在Mecanim。出现和消失可以使用gameObject.SetActive(true/false);来实现。如果你想做一些有时间的东西,最好使用协程或调用延迟参数-调用Unity文档。