【发布时间】:2018-11-19 01:19:53
【问题描述】:
我是 Unity 和编程的新手,所以我需要一些帮助。在玩家做出好的动作后,我试图显示文本 3 秒。它正在第一步,文本消失但仍在闪烁。可能是因为它处于更新方法并且该项目仍然被锁定......但是我怎样才能改变它以在每次好的移动后显示这个文本 3 秒?每件商品只限一次。谢谢
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class GameControl : MonoBehaviour
{
[SerializeField]
private GameObject someText
[SerializeField]
private GameObject goodMove;
// Use this for initialization
void Start()
{
someText.SetActive(false);
goodMove.SetActive(false);
}
void Update()
{
if (item1.locked && item2.locked && item3.locked)
{
someText.SetActive(true);
}
if (item1.locked || item2.locked || item3.locked)
{
StartCoroutine(waiter());
}
}
IEnumerator waiter()
{
goodMove.SetActive(true);
yield return new WaitForSeconds(3);
goodMove.SetActive(false);
}
}
编辑:项目被拖动到正确位置时被锁定
...case TouchPhase.Ended:
if (Mathf.Abs(transform.position.x - somePlace.position.x) <= 2f &&
Mathf.Abs(transform.position.y - somePlace.position.y) <= 2f)
{
transform.position = new Vector2(somePlace.position.x, somePlace.position.y);
transform.localScale -= new Vector3(0.4F, 0.4F, 0.4F);
locked = true;
}
else
{
transform.position = new Vector2(initialPosition.x, initialPosition.y);
}
break;
【问题讨论】:
-
我不知道这些变量的用途,但
if (item1.locked || item2.locked || item3.locked)看起来不正确。但是,如果是这样,如果您希望您的文本显示 3 秒,为什么它不是您现有的 3 秒协程的一部分,或者不是其他协程的一部分? -
@vb381 Draco 是对的,您的代码实际上是在锁定 3 个项目时设置文本,并在锁定一些项目时设置好移动。我还有一个问题:当您锁定一个项目并开始 3 秒的 goodMove 节目时,如果您在第一个项目结束的 3 秒之前激活另一个项目,会发生什么?
-
我在锁定时添加了我的问题代码。如果我激活另一个项目,什么都不会发生我可以将它拖到正确的位置,但文本只显示一次......