MRTK BoundsExtensions GetColliderBoundsPoints NullReferenceException - PullRequest
0 голосов
/ 09 апреля 2020

Я пытаюсь добавить BoxCollider и BoundingBox в GameObject, но когда я добавляю компонент BoundingBox, генерируется исключение NullReferenceException, которое ссылается на строку 395 объекта BoundsExtensions, которая, по-видимому, проверяет границы MeshCollider:

else if (collider is MeshCollider)
{
    MeshCollider mc = collider as MeshCollider;
    Bounds meshBounds = mc.sharedMesh.bounds;       //<---failing here
    meshBounds.GetCornerPositions(mc.transform, ref corners);
    boundsPoints.AddRange(corners);
}

Я не уверен, почему он обнаружил, что коллайдер был типа MeshCollider, когда я четко добавил BoxCollider и установил параметры до этого. Вот мой код:

BoxCollider collider = part.EnsureComponent<BoxCollider>();
collider.center = info.colliderCenter; //colliderCenter is type Vector3
collider.size = info.colliderSize; //colliderSize is type Vector3
BoundingBox bb = part.EnsureComponent<BoundingBox>();

Немного предыстории: я создаю приложение hololens, где пользователь может подобрать объект, но затем он может разделить его и просмотреть отдельные компоненты, составляющие объект. и затем снова измените его, когда все будет готово, так что им снова можно манипулировать только одним объектом.

Чтобы разделить объект, я удаляю BoxCollider, BoundingBox, et c из родительского объекта, затем перебирайте дочерние объекты, пока не дойдете до тех, у которых есть me sh, а затем добавьте MeshCollider вместе с ManipulationHandler, NearInteractionGrabbable и Rigidbody.

Чтобы вернуть его обратно, я удаляю материал из дочерних элементов и добавьте BoxCollider, BoundingBox и др. c обратно к родителю.

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

Спасибо за помощь!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...