【提问】如何明确“点击某按钮后、计算机执行了哪个函数”?
我希望知道:在Unity中对游戏物体按下CtrlD复制粘贴的时候,具体发生了什么。
背景是这样的:我在2021.3.0f1c1版本的Unity中创建了一个UI输入框(TMPInputField),我
问题未解决,但原始问题已解决。(问题:本帖标题。原始问题:如何在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。
于是成功解决问题,代码创建的文本框也可以显示光标了。