I'm making a thing that shows you what spaces are available when you mouse over a chess piece. It was working fine until I changed the letter I was using for my variables. Now Unity becomes instantly unresponsive when you mouse over the piece this script is attached to and has to be shut down from the task manager.
Any advice?
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
[RequireComponent(typeof(Collider2D))]
public class PieceMover : MonoBehaviour {
public string myName;
public bool horizontalVertical;
public bool diagonal;
public GameObject redCircle;
string[,] boardPositions = new string[8, 8];
Vector3 myPosition;
int myX, myY;
//int r,l,u,d = 1;
int n;
int d;
// Use this for initialization
void Start () {
myPosition = transform.position;
myX = (int)myPosition.x;
myY = (int)myPosition.y;
boardPositions[myX, myY] = myName;
// Update is called once per frame
void Update () {
}
private void OnMouseOver()
{
Debug.Log("test");
if (horizontalVertical)
{
//Check Right
while (myX + n < 8)
{
Debug.Log(n);
Debug.Log(myX + n + " " + myY);
if (boardPositions[myX + n, myY] == null)
{
Instantiate(redCircle, new Vector3(myX + n, myY), Quaternion.identity, transform);
n++;
}
}
//Check Left
//Check Up
//Check Down
//while(myY - d >= 0)
//{
// if(boardPositions[myX,myY-d] == null)
// {
// Instantiate(redCircle, new Vector3(myX, myY - d), Quaternion.identity, transform);
// d++;
// }
//}
}
}
private void OnMouseExit()
{
n = 1;
//l = 1;
//d = 1;
//u = 1;
foreach(Transform child in transform)
{
if(child.name != myName)
{
Destroy(child.gameObject);
}
}
}
}
↧