- Home /
textfield and button submit
i am struggling to find a way of link these two together, thats
var information: String;
private var guiOn = false;
private var rect: Rect;
var btnTexture : Texture;
var ClosePostion : Vector2 = new Vector2 (312,5);
var CloseSize : Vector2 = new Vector2 (35,35);
var CloseIcon : Texture;
var MyString = "";
//click to open gui
function OnMouseDown(){
guiOn = true;
rect = Rect(Input.mousePosition.x, Input.mousePosition.y, 300, 100);
yield WaitForSeconds(500);
guiOn = false;
}
function OnGUI(){
if (guiOn){
GUI.Box(Rect(0,0,200,200),"Current bid");
if (!btnTexture) {
Debug.LogError("Assign a texture");
return;
}
if (GUI.Button(Rect(10,10,50,50),btnTexture))
Debug.Log("texturebutton");
if (GUI.Button(Rect(10,70,50,30),"Bid")) /////////////////////<<<<<<<<
Debug.Log("bid placed");
var temp = "";
for (var c : char in MyString) {
if (c >= "0"[0] && c <= "9"[0]) {
temp += c;
}
}
MyString = GUI.TextField(new Rect(10,130,180,20),temp,30); /////////////<<<<<<
//close button
if (GUI.Button(Rect(ClosePostion.x,ClosePostion.y,CloseSize.x,CloseSize.y),CloseIcon))
{
guiOn = false;
}
}
}
Answer by robertbu · Aug 06, 2013 at 02:27 AM
Try this:
if (GUI.Button(Rect(10,70,50,30),"Bid")) {
var bid : int;
if (!int.TryParse(MyString, bid))
bid = some_default_value;
Debug.Log("The bid was: "+bid);
}
I stuck the code in and it worked fine for me:
#pragma strict
var information: String;
private var guiOn = false;
private var rect: Rect;
var btnTexture : Texture;
var ClosePostion : Vector2 = new Vector2 (312,5);
var CloseSize : Vector2 = new Vector2 (35,35);
var CloseIcon : Texture;
var $$anonymous$$yString = "";
//click to open gui
function On$$anonymous$$ouseDown(){
guiOn = true;
rect = Rect(Input.mousePosition.x, Input.mousePosition.y, 300, 100);
yield WaitForSeconds(500);
guiOn = false;
}
function OnGUI(){
if (guiOn){
GUI.Box(Rect(0,0,200,200),"Current bid");
if (!btnTexture) {
Debug.LogError("Assign a texture");
return;
}
if (GUI.Button(Rect(10,10,50,50),btnTexture))
Debug.Log("texturebutton");
if (GUI.Button(Rect(10,70,50,30),"Bid")) {
var bid : int;
if (!int.TryParse($$anonymous$$yString, bid))
bid = 0;
Debug.Log("The bid was: "+bid);
}
var temp = "";
for (var c : char in $$anonymous$$yString) {
if (c >= "0"[0] && c <= "9"[0]) {
temp += c;
}
}
$$anonymous$$yString = temp;
$$anonymous$$yString = GUI.TextField(new Rect(10,130,180,20),$$anonymous$$yString,30);
//close button
if (GUI.Button(Rect(ClosePostion.x,ClosePostion.y,CloseSize.x,CloseSize.y),CloseIcon)) {
guiOn = false;
}
}
}
Your method of conversion here suffers form some issues. You are rebuilding a new string every time OnGUI() is called even if the string does not change. This takes far more than the string length since every substring created in the process is also 'kept' until the next garbabe collection. And OnGUI() can be called multiple time per frame. Strings are small, so you'll likely be okay.
i thought as much when i got it to work, lost around 100fps thanks for straightening the issues out, this one works fine now
If your question is answered, click on the checkmark next to the answer to close it out. Thanks.
ive got a few more issues to work on,
need to show bids that have been entered
and have an ai turn based bidding
im quite unsure on how to code it. are there any resources that could point me in the right direction? thanks