我想在自定义检查器中限制文本区域中的字符串最大长度。我试图编写如下代码:
if(EditorGUI.EndChangeCheck()){
if(_dTarget.mazeNumData.Length >= 338){
_dTarget.mazeNumData.Remove((_dTarget.mazeNumData.Length - 1) - 3, 3);
}
}
但它没有用。我的代码有什么问题吗?
我的完整代码:
using UnityEngine;
using UnityEditor;
using System.Collections;
[CustomEditor(typeof(DigitTotal))]
public class DigitTotalEditor : Editor {
private DigitTotal _dTarget;
public override void OnInspectorGUI() {
_dTarget = (DigitTotal)target;
DrawDefaultInspector();
DrawCustomInspector();
}
void DrawCustomInspector() {
GUIStyle guiStyle = EditorStyles.textArea;
guiStyle.wordWrap = true;
EditorGUI.BeginChangeCheck();
_dTarget.mazeNumData = EditorGUILayout.TextArea(_dTarget.mazeNumData, guiStyle, new GUILayoutOption[]
{
GUILayout.Height(100f),
GUILayout.Width(250f),
});
if(EditorGUI.EndChangeCheck()){
if(_dTarget.mazeNumData.Length >= 338){
_dTarget.mazeNumData.Remove((_dTarget.mazeNumData.Length - 1) - 3, 3);
}
}
GUILayout.Space(5f);
GUILayout.Label("Digits : " + _dTarget.mazeNumData.Length, EditorStyles.boldLabel);
}
}
答案 0 :(得分:0)
定义一些恒定长度:
const int MAX_LEN = 1337;
为输入定义一些占位符:
string inputString = string.Empty;
在打印之前的OnGUI()
方法中(将字符串分配给GUI元素)执行以下操作:
//.. in OnGui before printing the text
if(inputString.Length > MAX_LEN)
inputString = inputString.Substring(0, MAX_LEN - 1);
修改强>
编辑代码:
if(dTarget.mazeNumData.Length > MAX_LEN)
_dTarget.mazeNumData = _dTarget.mazeNumData.Substring(0, MAX_LEN - 1);
_dTarget.mazeNumData = EditorGUILayout.TextArea(_dTarget.mazeNumData, guiStyle, new GUILayoutOption[]
{
GUILayout.Height(100f),
GUILayout.Width(250f),
});
应该做的伎俩。