Как удалить игровой объект из списка игровых объектов, в котором каждый игровой объект является созданным экземпляром или классом - PullRequest
0 голосов
/ 26 октября 2019

Я недавно начал учиться создавать игры для единства, и я столкнулся с этой проблемой, которую не смог исправить:

Я создал класс под названием piece. pieces - это двумерный массив классов. Затем я создал список игровых объектов с именем activepiece.

. Чтобы добавить в список, я создал экземпляр игрового объекта и добавил его в список следующим образом:

GameObject go = Instantiate(piecePrefab[index],GetTileCenter(x,y),Quaternion.identity) as GameObject; 
go.transform.SetParent (transform);
pieces[x,y] = go.GetComponent<piece>();
pieces[x,y].SetPosition (x,y);
activepiece.Add (go);

Теперьпроблема заключается в удалении определенной / определенной части из списка, что я пытаюсь сделать следующим образом:

piece c = pieces[x,y];
if(c != null){
    activepiece.Remove(c.GameObject);
    Destroy(c.GameObject);    
}

Я сталкиваюсь с этой ошибкой из Unity:

ошибка CS1061:«piece» не содержит определения для «GameObject», и невозможно найти доступный метод расширения «GameObject», принимающий первый аргумент типа «piece» (вы пропустили директиву using или ссылку на сборку?)

Ответы [ 2 ]

0 голосов
/ 26 октября 2019

Я нашел решение, хотя уверен, что это не изящно в любом случае:

piece c = pieces[x,y]; 
GameObject k = activepiece.Find(g => g.GetComponent<piece>() == c);
activepiece.Remove(k);
Destroy(k);
0 голосов
/ 26 октября 2019

Прежде всего, вы уверены, что ваш массив содержит кусок?

Если это так, попробуйте это (если вы этого не сделали):

piece c = pieces[x,y];
if(c != null){   
    activepiece.Remove(c.GameObject);
    Destroy(c.gameObject);  
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...