Как я могу сравнить позиции клонов? ⇐ C#

Место общения программистов C#
Anonymous
Как я могу сравнить позиции клонов?

Сообщение Anonymous »

У меня в списке 16 клонов. Затем список перемешивается, и клоны размещаются в случайных местах. У меня есть функция, которая при нажатии меняет положение клона на положение его соседа. Теперь я хочу запускать функцию winorLose() после каждого клика и сравнивать позиции списка клонов. Если они равны, будет загружен новый уровень. На данный момент я сделал это:
Board.cs

Код: Выделить всё

void Start() {
for (int a = GridHeight; a > 0; a--) {
for (int b = 0; b < GridWidth; b++) {
g = Instantiate(gemprefab, new Vector3(b, a, 0), Quaternion.identity) as GameObject;

g.name = g.GetInstanceID().ToString();
g.transform.parent = gameObject.transform;

//LastGem=g.GetComponent();

gemComponent = g.GetComponent();
gems.Add(gemComponent);
gems1.Add(gemComponent);
if(a == 1 && b == 3)
{
gemComponent.cube.renderer.enabled = false;
}
}
}

//gems.Sort ();
//gems1.Sort ();

gameObject.transform.position = new Vector3(-2.5f, -2.5f, 0);
ChangePosition();
WinOrLose();
}

public void ChangePosition() {

for (int i = 0; i < gems.Count; i++) {
Vector3 temp = gems[i].transform.position;
randomIndex = Random.Range(0, gems.Count);
gems[i].transform.position = gems[randomIndex].transform.position;
gems[randomIndex].transform.position = temp;
}
}

public void SwapGem(Gem gem1) {
gem1start = gem1.transform.position;
gem1end = gemComponent.transform.position;

if (gemComponent.IsNeighbourWith (gem1)) {
gem2start = gem1end;
gem2end = gem1start;
gem1.transform.position = gem2start;
gemComponent.transform.position = gem2end;
}
}

public void WinOrLose() {
gems1.Sort ();
for (int i = 0; i < gems.Count; i++) {
for (int j = 0; j < gems.Count; j++) {
if (gems[i].GetInstanceID() == gems1[j].GetInstanceID()) {
print("match);
}
}
}
}
Gems.cs

Код: Выделить всё

public void OnMouseDown() {
if (!GameObject.Find("board").GetComponent().isSwapping) {
GameObject.Find("board").GetComponent().SwapGem (this);
}

GameObject.Find("board").GetComponent().WinOrLose();
}
Код всегда печатает «совпадение» при нажатии кнопки. Почему я получаю это, списки не сравниваются?

Подробнее здесь: https://stackoverflow.com/questions/238 ... -of-clones

Вернуться в «C#»