Mr American Pie Ответов: 1

Как сохранить старый текст и добавить новую строку текста при вводе команды


Привет, я в основном пытаюсь сохранить старый текст, и в то время как если вы наберете его, помогите ему добавить новую строку текста. проблема в том, что каждый раз, когда я набираю справку, она снова печатает старый текст (дважды), а затем печатает новый.
public Canvas myCanvas;
public Text myText;

private string display = "";

List<string> chatEvents;

private bool calltext;

public InputField inputfield;
private Dictionary<string, System.Action<string,string>> commands;

protected void Awake()
{
    commands = new Dictionary<string, System.Action<string,string>>();
    // Add the commands you want to recognise along with the functions to call
    commands.Add( "help", OnHelpTyped );
    // Listen when the inputfield is validated
    inputfield.onEndEdit.AddListener( OnEndEdit );
}

private void OnEndEdit( string input )
{
    // Only consider onEndEdit if the Submit button has been pressed
    if ( !Input.GetButtonDown( "Submit" ) )
        return;

    bool commandFound = false;

    // Find the command
    foreach ( var item in commands )
    {
        if ( item.Key.ToLower().StartsWith( input.ToLower() ) )
        {
            commandFound = true;
            item.Value( item.Key, input );
            break;
        }
    }

    // Do something if the command has not been found
    if ( !commandFound )
        Debug.Log( "No word found" );

    // Clear the input field (if you want)
    inputfield.text = "";
}

private void OnHelpTyped( string command, string input )
{
    chatEvents.Add ("The List");
    calltext = true;
}

// Use this for initialization
void Start () {
    chatEvents = new List<string>();

    chatEvents.Add("Welcome to my simple application ");
    chatEvents.Add ("Type help for list of commands");

    calltext = true;

}

// Update is called once per frame
void Update () {
    if(calltext)
    {
        AddText();
        calltext = false;
    }
}

void AddText()
{
    foreach(string msg in chatEvents)
    {
        display = display.ToString () + msg.ToString() + "\n";
    }
    myText.text = display;
}


Что я уже пробовал:

Я перепробовал все, и это, кажется, работает, но он добавляет последние два текста плюс новый текст

1 Ответов

Рейтинг:
0

Peter Leow

Это произошло потому, что вы не очистили

display
перед конкатенацией
msg.ToString()
, попробовать это:
display = "";
foreach(string msg in chatEvents)
{
	display += msg.ToString() + "\n";
}


[no name]

Спасибо за ваш ответ, и он работает, большое вам спасибо. У меня также есть еще один вопрос, основанный на этом вопросе, но как бы вы пошли и очистили весь текст по команде (скажем, очистить)?