·
JavaScript,PHP,Qt C++,Unity C# 喜欢反复重构自己的代码、尽力让代码思路清晰。 喜欢人工智能。但对人工智能算法了解不多,正准备学习。 喜欢写长篇的、逻辑完整且清晰的文档,不喜欢口头交流。 喜欢有充足的时间,自由的思考、自由的决定自己做什么。无业,不就业,无经济压力。 喜欢玩策略游戏,例如《异星工厂》《群星》《国标麻将》。不喜欢动作游戏。

问题未解决,但原始问题已解决。(问题:本帖标题。原始问题:如何在Unity中让代码创建的输入框能够显示光标。)

考虑到有人可能希望我将解决过程发出来,因此我描述我的解决过程:

我先是意识到Unity源码中应该有对复制粘贴的定义,于是查Unity源码,查到源码位于编辑器安装路径下的Editor/Data/Resources/PackageManager/BuiltInPackages/com.unity.ugui

阅读了源码后,我找到了编辑器菜单栏中InputField的原理,但是依然没找到运行的函数与复制粘贴的函数。

然后,我去谷歌搜索【TMP_InputField missing caret】,没找到满意的文章。(之前已经在百度与CSDN搜了一圈,没搜到有价值的东西。)

我又搜索【create TMP_InputField with code】,找到了这篇文章:https://forum.unity.com/threads/creating-a-complete-tmp-input-field-via-script.625735/

这篇文章中作者遇到了和我一样的问题,解决方式是使用TMP_InputField的OnEnable函数。

但是这是2015年的文章。我在我的编辑器中尝试使用OnEnable,但是它是私有函数、禁止使用。

后来我发现可以对TMP_InputField所在的GameObject使用SetActive函数,它会调用OnEnable。

于是成功解决问题,代码创建的文本框也可以显示光标了。