使立方体隐藏几秒钟并再次出现几秒钟

时间:2014-02-05 00:30:49

标签: unity3d unityscript

是否有一个简单的UnityScript代码来隐藏和取消隐藏多维数据集 或特定时间的任何其他游戏对象?

//make the object invisible
renderer.enabled = false;

// make the object visible
renderer.enabled = true;

// toggle object's visibility each second
function Update () {

// Find out whether current second is odd or even
var seconds : int = Time.time;


// Enable renderer accordingly
renderer.enabled = oddeven;

2 个答案:

答案 0 :(得分:1)

你想要隐藏对象,触发等待N秒的协程,然后取消隐藏。

这是C#,转换为Javascript应该很简单,但我不认为JS使用 startCoroutine (文档中的This page解释了C#和Javascript版本之间的区别)。

public bool Hide = false;


void Update()
{
    if (Hide && renderer.enabled) {
        renderer.enabled = false;
        Hide = false;
        StartCoroutine("WaitUnhide");
    }
}


IEnumerator WaitUnhide()
{  
    yield return (new WaitForSeconds(2));
    renderer.enabled = true;
}

在此版本中,您可以从其他代码中设置'hide'变量以开始隐藏。 Hide && renderer.enabled意味着你不能在旧的隐藏完成之前启动新的隐藏 - 这不是唯一的方法,但它避免了多个隐藏/取消隐藏重叠。

让它永远循环:

  void Start()
  {  
    StartCoroutine("HideUnhide");
   }


  IEnumerator HideUnhide()
  {
    while (true) {
        yield return (new WaitForSeconds(2));
        renderer.enabled = true;
        yield return (new WaitForSeconds(2));
        renderer.enabled = false;
        }

  }

答案 1 :(得分:1)

要显示/隐藏游戏对象,而不是使用render.enabled属性,您应该使用

// Deactivates the game object.
gameObject.SetActive (false);

可以找到更多详细信息here

如正统所说,要定期调用此功能,startCoroutine是你的朋友。