Chat with keyboard ?

Hello i try to implement a chat in my multi-player game.
We can’t use the mouse because it’s an fps.
So i use the focus function on textfield when i press Return.
But how to send the message instead of a “if (gui.button)” when i press Return in the textfield ?
If i put a condition “if(Input.GetKey(KeyCode.Return))” it does nothing when its focused in the textfield…
And how leave the focus of the textfield after that ?

Thank you.

Check some of the code in here:
http://forum.unity3d.com/threads/69361-GUI-TextField-submission-via-quot-return-quot-key

I used to have this problem as well.

Yes it’s strange that a simple action like that, available on all games online, is hard to make in Unity (a chat with return key and not a click button).
So, thank you, I almost succeeded. There is just one problem i cant solve :
to press the SAME BUTTON Return to display the Textfield AND to send the message and make it disappear.
I didn’t manage well : the textfield didn’t disappear and i couldn’t send message if i remember.
Because i think changing one boolean with the same input is hard.

So i used Comma to display the textfield and Return to send the message.
It writes a comma at the beginning of each message, annoying…

But the script works so if it helps you or you can make it better, tell me :

using UnityEngine;
using System.Collections;
using System.Collections.Generic;

public class chat : MonoBehaviour {

public string phrase = “”;
public List phraseOut = new List();

public string namo;
private bool entree = false;
private bool send = false;

void Start () {

phraseOut.Add (“”);
phraseOut.Add (“”);
phraseOut.Add (“”);

}//start()

void Update () {

}//update()

void OnGUI(){

GUI.Label (new Rect (10,Screen.height-110,200,20), phraseOut[phraseOut.Count-3]);
GUI.Label (new Rect (10,Screen.height-90,200,20), phraseOut[phraseOut.Count-2]);
GUI.Label (new Rect (10,Screen.height-70,200,40), phraseOut[phraseOut.Count-1]);

Event e = Event.current;

if (e.keyCode == KeyCode.Return phrase!=“”) { entree = true; send = true; }

if (e.keyCode == KeyCode.Comma) { entree = false; }

if(entree == false) {

// GUI.SetNextControlName(“mytext”);
phrase = GUI.TextField(new Rect(10, Screen.height-50, 200, 20), phrase);

}

if (send)
{

send = false;
networkView.RPC (“chatup”,RPCMode.All,namo,phrase);
phrase = “”;

}//if send

}//gui

[RPC]
void chatup(string namo,string newPhrase)
{
phraseOut.Add(namo + " : " + newPhrase);

}//chatup()

}//class