当用户处于非活动状态超过 5 秒时,如何向用户显示提示?

How to Display hints to user when he is inactive for more than 5 sec in unity?

我使用 unity 制作了一个 2D 游戏,其中用户必须 select 相似颜色的对象,现在我想在用户无法 select 颜色超过四个时显示提示秒。

我想要类似于 candy crush 提示显示系统的东西,如果用户自己无法识别任何组合,candy crush 通过突出显示可能的组合来显示提示。

我不知道如何确定用户是否处于非活动状态以便我可以显示提示。

如果有人能帮我解决这个问题,我将不胜感激。提前致谢。

您可以使用 DateTime 类型并将其设置为 Update,因此当用户不执行任何操作时,如果 DateTime(现在)和保存的 DateTime, 相差大于或等于 5 秒, 你显示。

如果用户触摸,你标记用户已经做了那个,所以下一帧,你会看到他没有触摸,然后你再次设置 DateTime 并开始查看是否超过 5 秒。

你明白我的意思吗?

您可以使用一些产量为 5 秒的协程 (WaitForSeconds),然后放置 5 秒,如果它继续产量,您会显示提示。

我不同意 Joe Blow 在这一点上的观点,即您需要在代码中的任何地方调用用户做某事。用户可以做的是按下键盘上的一个键(也指望游戏手柄和控制器)或移动鼠标(在移动设备上模拟鼠标,因此也可以工作)。所以如果你有一个看起来像这样的 class :

using UnityEngine;
public class TestInActive : MonoBehaviour {
    private Vector3 prevMousePosition = Vector3.zero;
    void ShowGameHintInvoke()
    {
        CancelInvoke();
        Invoke("GameHint", 5);
    }
    void GameHint()
    {
        Debug.Log("This is a Hint");
    }
    // Update is called once per frame
    void Update () {
        if (Input.anyKeyDown || Input.mousePosition != prevMousePosition)
            ShowGameHintInvoke();
        prevMousePosition = Input.mousePosition;
    }
}

它应该工作得很好。这会在用户处于非活动状态 5 秒后调用一次 ShowGameHintInvoke()。然后它不会再调用它,直到用户做某事。