如何使用SetActiveRecursively(Moment = 1秒)在Unity中创建闪烁对象。
我的例子(更改):
public GameObject flashing_Label;
private float timer;
void Update() {
while(true)
{
flashing_Label.SetActiveRecursively(true);
timer = Time.deltaTime;
if(timer > 1)
{
flashing_Label.SetActiveRecursively(false);
timer = 0;
}
}
}
答案 0 :(得分:5)
public GameObject flashing_Label;
public float interval;
void Start()
{
InvokeRepeating("FlashLabel", 0, interval);
}
void FlashLabel()
{
if(flashing_Label.activeSelf)
flashing_Label.SetActive(false);
else
flashing_Label.SetActive(true);
}
答案 1 :(得分:1)
您可以使用Coroutines和新的Unity 4.6 GUI轻松实现此目的。在这里查看这篇伪造文本的文章。你可以轻松地为游戏对象轻松修改它
如果您只需要代码,请转到
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
using UnityEngine.EventSystems;
public class FlashingTextScript : MonoBehaviour {
Text flashingText;
void Start(){
//get the Text component
flashingText = GetComponent<Text>();
//Call coroutine BlinkText on Start
StartCoroutine(BlinkText());
}
//function to blink the text
public IEnumerator BlinkText(){
//blink it forever. You can set a terminating condition depending upon your requirement
while(true){
//set the Text's text to blank
flashingText.text= "";
//display blank text for 0.5 seconds
yield return new WaitForSeconds(.5f);
//display “I AM FLASHING TEXT” for the next 0.5 seconds
flashingText.text= "I AM FLASHING TEXT!";
yield return new WaitForSeconds(.5f);
}
}
}
P.S:虽然它似乎是一个无限循环,通常被认为是一种糟糕的编程习惯,但在这种情况下,它可以很好地工作,因为一旦对象被销毁,MonoBehaviour就会被销毁。此外,如果您不需要它永远闪存,您可以根据您的要求添加终止条件。
答案 2 :(得分:0)
查看统一WaitForSeconds功能。
通过int param。 (秒),你可以切换你的gameObject。
bool fadeIn = true;
IEnumerator Toggler()
{
yield return new WaitForSeconds(1);
fadeIn = !fadeIn;
}
然后按StartCoroutine(Toggler())
调用此函数。
答案 3 :(得分:0)
简单的方法是使用 InvokeRepeating() 和 CancelInvoke() 方法。
示例如下:
//Call this when you want to start blinking
InvokeRepeating("BlinkText", 0 , 0.03f);
void BlinkText() {
if(Title.gameObject.activeSelf)
Title.gameObject.SetActive(false);
else
Title.gameObject.SetActive(true);
}
//Call this when you want to stop blinking
CancelInvoke("BlinkText");