- Home /
Image Sprite doesn't change with Button Onclick
I'm trying to make a 2D board game where you first select which tile piece you want to place, then select the square where you want to place it, but the image isn't appearing on the square.
public class TilePieces : MonoBehaviour {
public Button Corner;
public Button DeadEnd;
public Button Intersection;
public Button Line;
public Button T;
// ^ the different tile pieces you can pick
public static bool cSelected;
public static bool dSelected;
public static bool iSelected;
public static bool lSelected;
public static bool tSelected;
public Text selectTile; //Text saying which Tile you picked
void Start () {
cSelected = false;
dSelected = false;
iSelected = false;
lSelected = false;
tSelected = false;
selectTile.text = "Tile Selected: ";
}
void Update () {}
void OnEnable(){
Corner.onClick.AddListener(SelectCorner);
DeadEnd.onClick.AddListener(SelectDeadend);
Intersection.onClick.AddListener(SelectIntersection);
Line.onClick.AddListener(SelectLine);
T.onClick.AddListener(SelectT);
}
void SelectCorner(){ // button listeners for each Tile
cSelected = true;
dSelected = false;
iSelected = false;
lSelected = false;
tSelected = false;
if (cSelected == true) {
print ("Corner Tile has been selected");
selectTile.text = "Tile Selected: Corner";
}
}
void SelectDeadend(){
cSelected = false;
dSelected = true;
iSelected = false;
lSelected = false;
tSelected = false;
if (dSelected == true) {
print ("Dead End Tile has been selected");
selectTile.text = "Tile Selected: Dead End";
}
}
void SelectIntersection(){
cSelected = false;
dSelected = false;
iSelected = true;
lSelected = false;
tSelected = false;
if (iSelected == true) {
print ("Intersection Tile has been selected");
selectTile.text = "Tile Selected: Intersection";
}
}
void SelectLine(){
cSelected = false;
dSelected = false;
iSelected = false;
lSelected = true;
tSelected = false;
if (lSelected == true) {
print ("Line Tile has been selected");
selectTile.text = "Tile Selected: Line";
}
}
void SelectT(){
cSelected = false;
dSelected = false;
iSelected = false;
lSelected = false;
tSelected = true;
if (tSelected == true) {
print ("T Tile has been selected");
selectTile.text = "Tile Selected: T";
}
}
}
^ This is for picking the tile pieces
public class Tiles : MonoBehaviour {
public Button[] tileList; // 60 buttons total
public Sprite Corner;
public Sprite DeadEnd;
public Sprite Intersection;
public Sprite Line;
public Sprite T;
// ^ images of each tile piece
bool cS;
bool dS;
bool iS;
bool lS;
bool tS;
void Start () {
cS = TilePieces.cSelected;
dS = TilePieces.dSelected;
iS = TilePieces.iSelected;
lS = TilePieces.lSelected;
tS = TilePieces.tSelected;
for (int i = 0; i < tileList.Length; i++) {
tileList [i].onClick.AddListener (PlaceTile); // add a button listener for each square in the board
}
}
void Update () {}
void PlaceTile(){ // changes image of square depending on which tile is picked
for (int i = 0; i < tileList.Length; i++) {
if (cS == true) {
tileList [i].GetComponent<Image>().sprite = Corner;
} else if (dS == true) {
tileList [i].GetComponent<Image>().sprite = DeadEnd;
} else if (iS == true) {
tileList [i].GetComponent<Image>().sprite = Intersection;
} else if (lS == true) {
tileList [i].GetComponent<Image>().sprite = Line;
} else if (tS == true) {
tileList [i].GetComponent<Image>().sprite = T;
}
}
}
}
^ And this is for the board
It could that I referenced the booleans from TilePieces incorrectly, I tried looking up how to do so last night. Does anyone know what's wrong and how to fix it?
Comment