2017-01-12 9 views
0

Ich möchte meine maximale Zeichenlänge in Textbereich in meinem benutzerdefinierten Inspektor beschränken. Ich habe versucht, wie unten zu machen Code:Wie wird die Stringlänge im Textbereich begrenzt? [Editor Scripting]

if(EditorGUI.EndChangeCheck()){ 
     if(_dTarget.mazeNumData.Length >= 338){ 
      _dTarget.mazeNumData.Remove((_dTarget.mazeNumData.Length - 1) - 3, 3); 
     } 
} 

Aber es hat nicht work.Is etwas falsch mit meinem Code?

Mein vollständiger Code:

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); 
    } 
} 

Antwort

0

definieren eine konstante Länge:

const int MAX_LEN = 1337; 

einige Platzhalter für den Eingang definieren:

string inputString = string.Empty; 

In OnGUI() Verfahren kurz vor dem Drucken (Zuordnung der String in GUI-Element) tun Sie etwas wie folgt:

//.. in OnGui before printing the text 
if(inputString.Length > MAX_LEN) 
    inputString = inputString.Substring(0, MAX_LEN - 1); 

EDIT:

bearbeiten Sie den Code dazu:

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), 
    }); 

sollte es tun.

+0

danke für die antwort. Ich habe meinen Code wie vorgeschlagen geändert, aber es hat trotzdem nicht funktioniert. Hier ist der Code: http://pastebin.com/n54XNKwQ –

+0

@AliAkbar bearbeitet Ihre Pastebin: [http://pastebin.com/Uu8C9bTQ](http://pastebin.com/Uu8C9bTQ) –

+0

Danke, dass es funktioniert! aber das Problem ist, dass die letzten 3 Zeichen nur entfernt werden, wenn ich irgendwo außerhalb des Textbereichs klicke: | –

Verwandte Themen