2

如何使用 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;        
        }   
    }
}
4

4 回答 4

6

使用InvokeRepeating

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);
}
于 2014-02-05T13:49:28.083 回答
1

看看统一的WaitForSeconds函数。

通过传递 int 参数。(秒),您可以切换您的游戏对象。

布尔淡入=真;

IEnumerator Toggler()
{
    yield return new WaitForSeconds(1);
    fadeIn = !fadeIn;
}

然后调用这个函数 StartCoroutine(Toggler())

于 2014-02-05T13:44:40.923 回答
1

您可以使用 Coroutines 和新的 Unity 4.6 GUI 轻松实现这一目标。在这里查看这篇文章,它伪造了一个文本。您可以轻松地为游戏对象轻松修改它

闪烁文本 - TGC

如果你只需要代码,你去

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);
}
}
}

PS:尽管它似乎是一个通常被认为是一种不好的编程习惯的无限循环,但在这种情况下它工作得很好,因为一旦对象被销毁,MonoBehaviour 就会被销毁。另外,如果您不需要它永远闪烁,您可以根据您的要求添加终止条件。

于 2015-01-11T07:10:37.947 回答
0

简单的方法是使用 InvokeRepeating() 和 CancelInvoke() 方法。

  1. InvokeRepeating("BlinkText",0,0.3) 将每隔 0.03 时间间隔重复调用 BlinkText()。
  2. CancelInvoke("BlinkText") 将停止重复调用。

这是示例:

//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");

统一文档

于 2021-02-12T03:55:41.663 回答