- Home /
Textfield doesnt work; it doesnt apply string
Hello, i've got code like this:
static string txt1 = " ";
static string txt2 = " ";
static string txt3 = " ";
static string txt4 = " ";
static string txt5 = " ";
static string txt0;
bool disTxt5=false;
bool disTxt4 = false;
bool disTxt3 = false;
bool disTxt2 = false;
bool disTxt1 = false;
string stringToSend = " ";
iWillWrite=false;
int max =80;
void Update()
{
if (Input.GetButtonDown ("chatTest")) {
//string lol1 = "smth";
//string lol2 = "isFckUp";
PhotonView photonView = PhotonView.Get(this);
photonView.RPC("addChatMessage", PhotonTargets.All, myName, stringToSend);
}
if(Input.GetKeyDown("return") && iWillwrite==true)
{
Debug.Log("update z wysylka dziala");
sendMessageToAll();
}
}
[RPC]
void addChatMessage(string name, string text) {
refreshChat = true;
Debug.Log ("dostal ja cos");
txt5 = txt4;
txt4 = txt3;
txt3 = txt2;
txt2 = txt1;
txt1 = (name + ": " + text);
StartCoroutine(disableChat());
disTxt1=false;
disTxt2=false;
disTxt3=false;
disTxt4=false;
disTxt5=false;
//refreshChat = true;
}
void OnGUI()
{
if (refreshChat == true) {
if(disTxt5==false)
{
GUI.Label (new Rect(0, (Screen.height*0.8F)+100, 100, 20),txt5);
}
if(disTxt4==false){
GUI.Label (new Rect(0, (Screen.height*0.8F)+80, 100, 20),txt4);}
if(disTxt3==false){
GUI.Label (new Rect(0, (Screen.height*0.8F)+60, 100, 20),txt3);}
if(disTxt2==false){
GUI.Label (new Rect(0, (Screen.height*0.8F)+40, 100, 20),txt2);}
if(disTxt1==false){
GUI.Label (new Rect(0, (Screen.height*0.8F)+20, 100, 20),txt1);}
}
if (iWillwrite == true)
{
stringToSend = GUI.TextField(new Rect(0, (Screen.height*0.8F), 100, 20), stringToSend, max);
if(Input.GetKeyDown("return"))
{
Debug.Log ("sTS: "+stringToSend);
}
//Willwrite=true;
//}
//
}
public void sendMessageToAll()
{
PhotonView photonView = PhotonView.Get(this);
photonView.RPC("addChatMessage", PhotonTargets.All, myName, stringToSend);
Debug.Log ("wysylam wiadomosc: "+stringToSend);
stringToSend="";
iWillwrite = true;
}
Let me explain this. I create RPC addChatMessage where you can find 6 strings. All represents one line in chat, and the txt0 is receiving new message which replaces older. All calls to this function got 2 strings - name and text. Because of that in chat you can see "Nickname: randomMixOfWords". I tested it on chatTest button - it works pefrectly with strings lol1 and lol2. Later you can see stringToSend which should save the text(and it doesnt). When player hits enter key it should call function sendMessageToAll. There string is send to all players in game.
The problem is stringToSend. Somehow it doesnt work. When you replace in chatTest lol1 and lol2 with myName and stringToSend you will see in chat "Nickname: "(empty space). Propably I should confirm string but I have no idea how. What is funny when you shut down TextField and you'll relaunch it you will find that message is saved in window and you're able to see what you wrote last time.
Debug.Logs shows that script ends on OnGUI. What may be wrong?
Your answer
![](https://koobas.hobune.stream/wayback/20220613200833im_/https://answers.unity.com/themes/thub/images/avi.jpg)
Follow this Question
Related Questions
Strange string appending 0 Answers
Building a Message Board 0 Answers
How do i take a string from a gui and show it in the gameworld c# 1 Answer
Number 0 not showing up in GUI.Button 2 Answers