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

Making GameObject appear and disappear for a finite amount of time

我正在尝试让 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.

从任务管理器中退出它

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

所以我想我做错了什么。在 Unity 中制作 Gameobject Blink/Flash/appear-disappear 的最佳方法是什么?

谢谢大家。

您可以为眨眼等制作动画 - Animations in Mecanim. Appearing and disappearing you can achieve using gameObject.SetActive(true/false);. If you want to make something with time its better to use Coroutines or just Invoke with delay parameter - Invoke Unity Docs

您正在使用无限循环,它会完全锁定您的 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);
     }
}

间隔是一个浮点数 - 类似于 1f 0.5f 等