C++:世界上唯一能让程序员在配置环境上比写代码还累的语言 😅|

香菇0_0

园龄:2年7个月粉丝:10关注:1

[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 中国大陆许可协议进行许可。

posted @   香菇0_0  阅读(46)  评论(0编辑  收藏  举报  
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起
  1. 1 404 not found REOL
404 not found - REOL
00:00 / 00:00
An audio error has occurred.