В течение прошедшего дня я пытался перенести свою игру love2D в единое целое, и на данный момент я столкнулся с одной главной проблемой: я не могу воспроизвести выделение соседа.
Проблема в том, что: Если я перейду от наведения одного шестигранника на другой, если шестигранник, на который я пошел, делит соседей с предыдущего шестиугольника, эти соседи не будут выделены.
Вот мой код для выделения соседей:
foreach(Tile tile in hex.neighbours){
tile.GetComponent<Renderer>().material.color=tile.data.Elements[tile.data.Element];
if (on){ // are we highlighting?
print("Highlighting..");
if(tile.GetComponent<Renderer>().material.color==tile.data.Elements[tile.data.Element] ){
//if the color of the neighbors is the same as it's element's color(meaning it hasn't been highlighted yet), highlight it.
print("changing color!");
tile.GetComponent<Renderer>().material.color=tile.GetComponent<Renderer>().material.color+new Color32(20,20,20,0);
}
}
else{
//unhightlighting
if(tile.GetComponent<Renderer>().material.color!=tile.data.Elements[tile.data.Element]){
//if the color of the neighbors isn't the same as it's element's color(meaning it's highlighted), unhighlight it.
tile.GetComponent<Renderer>().material.color=tile.data.Elements[tile.data.Element];
}
}
}
Вот как я проверяю, выделять или не выделять:
foreach(KeyValuePair<GameObject,Hex> h in HexData){
if (hovering==null && h.Value.hovering){
h.Value.hovering=false;
//if we're not hovering over anything and a hexagon still has it's neighbors highlighted, unhighlight it's neighbors
if (h.Value.neighborsHighlighted==true){
highlightNeighbors(false,h.Value);
h.Value.neighborsHighlighted=false;
}
}
if(!h.Value.hovering && h.Value.neighborsHighlighted){
{
//if a hexagon isn't being hovered over, but it's neighbors are still hightlighed, unhighlight them.
highlightNeighbors(false,h.Value);
h.Value.neighborsHighlighted=false;
};
}
if (h.Value.hovering && h.Value.neighborsHighlighted==false){
//if we're hovering over a hexagon and it's neighbors aren't highlighted, highlight them
highlightNeighbors(true,h.Value);
h.Value.neighborsHighlighted=true;
}
}