如何解决如何在Chatbot unity中增加延迟时间
有人可以帮我在这段代码中为用户味精与机器人味精之间增加2秒的延迟时间吗?
如果有人能帮助我,我将不胜感激 谢谢
Unity中使用设备上和离线bot开发框架的对话式bot。
using Syn.Bot.Oscova.Attributes;
using System;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class Message
{
public string Text;
public Text TextObject;
public MessageType MessageType;
}
public enum MessageType
{
User,Bot
}
public class BotDialog: Dialog
{
[Expression("Hello Bot")]
public void Hello(Context context,Result result)
{
result.SendResponse("Hello User!");
}
}
public class GameManager : MonoBehaviour
{
OscovaBot MainBot;
public GameObject chatPanel,textObject;
public InputField chatBox;
public Color UserColor,BotColor;
List<Message> Messages = new List<Message>();
// Start is called before the first frame update
void Start()
{
try
{
MainBot = new OscovaBot();
OscovaBot.Logger.LogReceived += (s,o) =>
{
Debug.Log($"OscovaBot: {o.Log}");
};
MainBot.Dialogs.Add(new BotDialog());
//MainBot.ImportWorkspace("Assets/bot-kb.west");
MainBot.Trainer.StartTraining();
MainBot.MainUser.ResponseReceived += (sender,evt) =>
{
AddMessage($"Bot: {evt.Response.Text}",MessageType.Bot);
};
}
catch (Exception ex)
{
Debug.LogError(ex);
}
}
public void AddMessage(string messageText,MessageType messageType)
{
if (Messages.Count >= 25)
{
//Remove when too much.
Destroy(Messages[0].TextObject.gameObject);
Messages.Remove(Messages[0]);
}
var newMessage = new Message { Text = messageText };
var newText = Instantiate(textObject,chatPanel.transform);
newMessage.TextObject = newText.GetComponent<Text>();
newMessage.TextObject.text = messageText;
newMessage.TextObject.color = messageType == MessageType.User ? UserColor : BotColor;
Messages.Add(newMessage);
}
public void SendMessageToBot()
{
var userMessage = chatBox.text;
if (!string.IsNullOrEmpty(userMessage))
{
Debug.Log($"OscovaBot:[USER] {userMessage}");
AddMessage($"User: {userMessage}",MessageType.User);
var request = MainBot.MainUser.CreateRequest(userMessage);
var evaluationResult = MainBot.Evaluate(request);
evaluationResult.Invoke();
chatBox.Select();
chatBox.text = "";
}
}
// Update is called once per frame
void Update()
{
if (Input.GetKeyDown(KeyCode.Return))
{
SendMessageToBot();
}
}
}
有关此代码的更多信息:https://medium.com/@BotDeveloper/creating-a-bot-in-unity-in-c-6a595d51a8fa
解决方法
您好,您可以使用2种方式进行操作。调用(字符串函数名称,浮动时间)或例程。 您可以使用和Invoke(“ Functionname”,2f);在收到用户的消息2秒钟后延迟执行该功能
pd:为什么要投反对票?我的回答是正确的。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。