使游戏对象在有限的时间内出现和消失

问题描述 投票:0回答:3

我正在尝试让游戏对象在有限的时间内出现和消失(让我们暂时将时间函数放在一边)。

这是我的结论:

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
从任务管理器中退出它。

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

所以我想我做错了什么。在

Gameobject
中制作
Unity
闪烁/闪光/出现-消失的最佳方法是什么?

谢谢大家。

c# unity-game-engine gameobject
3个回答
5
投票

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


0
投票

您可以制作眨眼等动画 - Mecanim 中的动画。出现和消失可以使用

gameObject.SetActive(true/false);
来实现。如果你想随着时间的推移做一些事情,最好使用Coroutines或只是使用延迟参数调用 - Invoke Unity Docs


0
投票

呃呃呃呃呃呃呃呃呃呃呃呃呃呃呃呃呃呃呃呃呃呃呃呃呃呃呃呃呃呃呃呃呃呃呃呃呃呃呃呃呃呃呃呃呃呃呃呃呃呃呃呃呃呃呃呃呃呃呃呃呃呃呃呃呃

© www.soinside.com 2019 - 2024. All rights reserved.