SpriteRenderer.Color&& Colider Interact

时间:2017-08-09 08:26:17

标签: c# unity3d

我有一张包含多个地区的地图  我选择了一个区域并且它是彩色的。 我想要做的就是当我选择另一个最近选择的区域来淡化和选择我选择的区域时 这是用于为区域着色的代码

targetIndex = System.Array.IndexOf(Maps, target);
Maps[targetIndex].GetComponent<SpriteRenderer>().color = Color.gray; 

1 个答案:

答案 0 :(得分:0)

添加两个索引。让我们称他们为currentlySelectedIndexpreviouslySelectedIndex

在开始时,这两个将指向第一个对象,因为之前没有选定的区域。

当您进行第二次或更多选择时,您会将currentlySelectedIndex分配给新选择的区域,但previouslySelectedIndex仍将指向旧区域。

此时,您将使用previouslySelectedIndex,就像在为区域着色时一样。完成旧区域着色后,您将previouslySelectedIndex指定为currentlySelectedIndex。这将继续下去。

  

//Check if its the first time Selection

currentlySelectedIndex = System.Array.IndexOf(Maps, target);
Maps[currentlySelectedIndex].GetComponent<SpriteRenderer>().color = Color.gray;
previouslySelectedIndex = currentlySelectedIndex;

//After the first time selection

currentlySelectedIndex = System.Array.IndexOf(Maps, target); //New Selected Region
Maps[currentlySelectedIndex].GetComponent<SpriteRenderer>().color = Color.gray;
Maps[previouslySelectedIndex].GetComponent<SpriteRenderer>().color = FadeColor; //Old Selected Region
previouslySelectedIndex = currentlySelectedIndex;