[Unity] Inputfield光标移动到最后(不选中内容)
经过测试,要用Inputfield实现光标末尾显示但不选中内容非常麻烦,要么会选中全部,要么采用下面这种延迟显示,但会有明显的变化中间过程:
protected override void OnPanelEnter()
{
// 先激活输入框(这里的InputField是成员变量不是类名)
InputField.ActivateInputField();
// 确保当前帧结束后执行,避免其他逻辑干扰
StartCoroutine(SetCaretPositionNextFrame());
}
private IEnumerator SetCaretPositionNextFrame()
{
// 等待一帧
yield return null;
// 设置光标位置到末尾
InputField.caretPosition = InputField.text.Length;
InputField.selectionAnchorPosition = InputField.caretPosition;
InputField.selectionFocusPosition = InputField.caretPosition;
}
因此使用InputMesh(TMP)替代,取消勾选ControlSettings的OnFocus-SelectAll,但是字体文件需要特殊处理:选中字体文件,右键Create->TextMeshPro->FontAsset,然后拖动到InpuField(TMP)里面Placeholder和Text的TextMeshPro组件上:
最后这么调用即可:
protected override void OnPanelEnter()
{
// (这里的InputField是成员变量不是类名)
InputField.DeactivateInputField();
InputField.caretPosition = InputField.text.Length;
InputField.ActivateInputField();
}
本文作者:香菇0_0
本文链接:https://www.cnblogs.com/Xiang-gu/p/18601769
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步