Я пытаюсь динамически добавить модель FBX в сцену и добавить следующие компоненты к дочерним объектам основного GameObject, созданного из модели FBX:
MeshCollider (Я добавляю меня sh для этого с помощью переменной sharedMe sh)
ManipulationHandler
NearInteractionGrabbable
Когда я тестирую функциональность в Unity, он работает безупречно. Когда я развертываю HoloLens 2, работают только те объекты, для которых не требуется «convx = true». 1011 *
Вот мой код для справки о том, как я заставляю все работать:
void Start()
{
//Grab object from Resources/Objects using provided unique identifier
//I'm instantiating like this because I'm setting the parent to another GameObject in the original code and I got errors if I didn't do it this way
GameObject go = Instantiate(Resources.Load<GameObject>("Objects/" + objectId));
//Loop through child objects of model
for (int i = 0; i < go.transform.childCount; i++)
{
AddManipulationComponents(go.transform.GetChild(i).gameObject);
}
}
void AddManipulationComponents(GameObject item)
{
//Get MeshFilter so I can set the mesh of it to the sharedMesh of the MeshCollider
MeshFilter meshFilter = item.GetComponent<MeshFilter>();
//Only Add MeshCollider components if there's a mesh on the object.
if (meshFilter != null)
{
Mesh mesh = item.GetComponent<MeshFilter>().mesh;
if (mesh != null)
{
//Add MeshCollider
MeshCollider collider = item.EnsureComponent<MeshCollider>();
//A lot of components are curved and need convex set to false
collider.convex = true;
//Add NearInteractionGrabbable
item.EnsureComponent<NearInteractionGrabbable>();
//Add ManipulationHandler
item.EnsureComponent<ManipulationHandler>();
//Set mesh to MeshCollider
collider.sharedMesh = mesh;
}
}
//If current component has children, then loop through those.
if (item.transform.childCount > 0)
{
for (int i = 0; i < item.transform.childCount; i++)
{
AddManipulationComponents(item.transform.GetChild(i).gameObject);
}
}
}
Это работает, когда я запускаю его через Unity, но когда я создаю его и развертываю на HoloLens 2 это не работает полностью. Под этим я подразумеваю, что на самом деле работают только 3 или 4 дочерних объекта, и они оказываются плоскими. Это заставляет меня думать, что "выпуклая" переменная в MeshCollider ведет себя не так, как я бы надеялся.
У кого-нибудь есть исправление для этого? (служебная информация):