Я предполагаю, что вы используете класс DetectedPlaneGenerator для обнаружения плоскостей, предоставленных в пакете GoogleARCore для единства.
В методе Update ():
Следующий фрагмент кода отвечает за обнаружение плоскости и после создания префабов этой плоскости.
Session.GetTrackables<DetectedPlane>(m_NewPlanes, TrackableQueryFilter.New);
Используется DetectedPlane , который является одним из трех других отслеживаемых объектов для поиска самолетов с использованием метода GetTrackables .
Чтобы включить / отключить это обнаружение плоскости, просто установите проверку bool в Update (), и вы можете обработать ее любым способом, я добавил два новых метода, чтобы вы могли добавлять вызовы кнопок, чтобы включать и отключать ее.
bool search = false;
public void StartSearch()
{
search = true;
}
public void StopSearch()
{
search = false;
}
public void Update()
{
// Check that motion tracking is tracking.
if (Session.Status != SessionStatus.Tracking)
{
return;
}
if(search){
Session.GetTrackables<DetectedPlane>(m_NewPlanes, TrackableQueryFilter.New);
for (int i = 0; i < m_NewPlanes.Count; i++)
{
GameObject planeObject = Instantiate(DetectedPlanePrefab, Vector3.zero, Quaternion.identity, transform);
planeObject.GetComponent<DetectedPlaneVisualizer>().Initialize(m_NewPlanes[i]);
}
}
}
Вы можете дополнительно обрабатывать planePrefabs, для которых создается экземпляр, отключая все дочерние объекты компонента, к которому присоединен этот скрипт, поскольку эти префабы создаются как его дочерние gameObjects.