当用户处于非活动状态超过 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()。然后它不会再调用它,直到用户做某事。
我使用 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()。然后它不会再调用它,直到用户做某事。