show_question_async

此函数打开一个窗口并向用户显示您在函数中定义的问题。 这是一个异步函数,因此 GameMaker 在等待答案时不会阻止运行它的设备,而是继续正常运行事件。 该函数有两个按钮,分别显示“是”和“否”,一旦用户按下其中一个按钮,就会触发一个异步 对话框 事件,在该事件持续期间,将有一个 DSmap 存储在变量 async_load 中。

该映射将包含两个键,“id”和“status”。 “id”是函数在调用时返回的值,而“status”将分别为 truefalse(表示“是”和“否”)。

注意 此函数 仅供 调试和测试使用 ,不应在已发布的游戏中使用。为此,您应该创建一个自定义用户界面来接收玩家的输入,以便您可以完全控制对话框的外观和行为。

 

语法:

show_question_async(string);

参数类型描述
stringString要向用户提出的问题。

 

返回:

Async Request ID

 

扩展示例:

显示消息的对象的左鼠标按事件(例如)将具有以下代码:

msg = show_question_async("Do you want to buy some armour for " + string(armour[0, 5]) + "coins?");

以上将显示给定字符串的问题,要求用户按“是”或“否”。 函数 ID 存储在变量“msg”中,并将在异步对话 事件中使用,如下所示:

var i_d, stat;
i_d = ds_map_find_value(async_load, "id");
if (i_d == msg)
{
    if (ds_map_find_value(async_load, "status"))
    {
        coins -= armour[0,5];
        global.protection += armour[0,0];
    }
}

上述代码根据变量“msg”中存储的值检查返回的 DS Map 的“id”键。 如果它们相同,它会检查是否按下了两个按钮之一,如果返回 true,它会从变量中减去一个值,并将一个值也添加到全局变量。