让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
从任务管理器中退出。
(是的,我知道在方法中有一个无限循环)。
所以我猜我做错了什么。什么是使Gameobject
在Unity
中闪烁/闪烁/出现/消失的最佳方法?
谢谢。
你正在使用一个无限循环,它完全锁定了你的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文档。