c# - 在运行时从输入框(Text Mesh Pro)设置结束编辑事件
问题描述
我正在 Unity 中编写游戏,但在 Text Mesh Pro 的输入框中出现 On End Edit Event 问题。我需要在运行时(在代码中)定义事件。我真的不知道如何解决这个问题。
这是编辑器中事件的图片,我希望它连接到 PlayerConnectionManager 类中的 PressedButton 方法:
感谢您的任何帮助!
解决方案
我假设您需要在运行时而不是通过编辑器调用 PlayerConnectionManager.PressedButton。如果是这样的话,那就很容易了。你只需要使用addlistener。这是一个片段。
public class TextMeshAdd : MonoBehaviour
{
//input field object
public TMP_InputField tmpInputField;
// Use this for initialization
void Start ()
{
//Add a listener function here
//Note: The function has to be of the type with parameter string
tmpInputField.onEndEdit.AddListener(TextMeshUpdated);
}
public void TextMeshUpdated(string text)
{
Debug.Log("Output string " + text);
}
}
记住你给它的函数应该有一个带字符串的参数。即
PlayerConnectionManager.PressedButton
应该是上面提到的类似类型TextMeshUpdated(string text)
。这将允许它在运行时结束回调函数。
您必须记住的另一件事是,如果您在其他地方使用输入字段,请确保在添加新侦听器之前删除旧侦听器。你可以通过使用这个
tmpInputField.onEndEdit.RemoveListener(TextMeshUpdated);
或
tmpInputField.onEndEdit.RemoveAllListeners();
第一种方法将仅删除特定的函数回调,而 RemoveAllListeners 将删除附加到回调的所有事件侦听器。如果您不这样做并尝试分配新的回调,它将尝试调用旧函数,并且可能会抛出一些错误。
推荐阅读
- arrays - 将数据框中的分隔值拆分为 R 中的多维数组
- python - 计算引擎的服务帐户没有足够的云视觉 api 范围
- powershell - Powershell、Outlook隐藏邮箱管理。
- python - 子进程失效,`communicate()` 挂起
- python - 使用 sklearn 的 accuracy_score 函数输入错误
- javascript - JavaScript Promise.all - 如何检查解析状态?
- java - InvalidKeyException:从 Java 中的 PEM 文件中读取 EC 私钥时,密钥格式无效
- python - 如何在 Tensorflow 中使用没有类的预训练模型?
- java - 双重值的乘法产生意外的行为?
- oracle - 为什么说 RDBMS 不能分区容忍?