【发布时间】:2017-01-05 12:08:23
【问题描述】:
UI InputField 获得焦点时会突出显示里面的所有文本。我想将插入符号移到文本的末尾,以便用户可以继续在其中编写文本。目前我有一个 hack 解决方案,它可以工作,但是文本突出显示的时间仍然很短。这是我的技巧:
using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.UI;
public class TextFieldBehaviour : MonoBehaviour, ISelectHandler
{
private InputField inputField;
private bool isCaretPositionReset = false;
void Start()
{
inputField = gameObject.GetComponent<InputField>();
}
public void OnSelect (BaseEventData eventData)
{
isCaretPositionReset = false;
}
void Update()
{
if(inputField.isFocused == true && isCaretPositionReset == false)
{
inputField.caretPosition = inputField.text.Length;
isCaretPositionReset = true;
}
}
}
我还查看了 InputField 的 source code。但是我很难在没有 SelectAll() 函数的情况下创建自定义的。由于UnityEngine.UI.SetPropertyUtility 的保护级别,我遇到了一堆错误。
【问题讨论】: