Я пытаюсь отредактировать эффект пользователя. У меня есть программа, которая находит конкретный якорь, а затем меняет текстуру только этого якоря, например, потолок изменится от камня к дереву. Тем не менее, это работает только в том случае, если я установил источник данных MRUK в Prefab. Если я установите его на устройство или устройство с помощью Prefab Swarkback (оно должно быть на устройстве или устройстве с приготовлением Prefab), оно больше не функционирует и дает мне ошибку, показанную ниже в изображении и в тексте:
nullReferenceException: ссылка на объект не установлен на экземпляр объекта < /p>
textureChange+< waitforeffectmeshenchengence> d__4.movenext () (At Assets /textureChange.cs: 22) < /p>
вот код, который я использую ниже. Почему у меня есть эта ошибка, и как я могу ее исправить? Кроме того, настройки MRUK:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Meta.XR.MRUtilityKit;
public class TextureChange : MonoBehaviour
{
[SerializeField] private EffectMesh ceilingEffectMesh;
public Material meshMaterial;
public Texture texture1;
// Start is called before the first frame update
void Start()
{
StartCoroutine(WaitForEffectMeshThenChange());
}
private IEnumerator WaitForEffectMeshThenChange()
{
var room = MRUK.Instance.GetCurrentRoom();
while (room.CeilingAnchor &&
!ceilingEffectMesh.EffectMeshObjects.ContainsKey(room.CeilingAnchor))
{
yield return null;
}
var wrapper = ceilingEffectMesh.EffectMeshObjects[room.CeilingAnchor];
var meshGo = wrapper.effectMeshGO;
if (!meshGo)
{
Debug.LogError("No effectMeshGO found on wrapper!");
yield break;
}
meshGo.transform.SetParent(null, /* worldPositionStays= */ true);
meshMaterial = meshGo.GetComponent().material;
meshMaterial.mainTexture = texture1;
}
// Update is called once per frame
//void Update()
//{
// meshMaterial.mainTexture = texture1;
//}
}
< /code>
Вот несколько скриншотов, которые также показывают, как он выглядит, когда он работает и не работает. Как показано, изменение текстуры потолка, если она работает:
Работа с включенной префабацией < /p>
не работает с устройством или устройством с включенным отказа 30 ошибок < /li>
Я попытался переписать код
У меня действительно плохое понимание того, как редактировать определенные теги эффекта, поэтому я много боролся с этим. < /Li>
< /ul>
Подробнее здесь: https://stackoverflow.com/questions/797 ... -meta-unit
MRUK смешанная реальность - возникает проблемы с редактированием эффекта устройства (Meta Unity) ⇐ C#
Место общения программистов C#
1754920708
Anonymous
Я пытаюсь отредактировать эффект пользователя. У меня есть программа, которая находит конкретный якорь, а затем меняет текстуру только этого якоря, например, потолок изменится от камня к дереву. Тем не менее, это работает только в том случае, если я установил источник данных MRUK в Prefab. Если я установите его на устройство или устройство с помощью Prefab Swarkback (оно должно быть на устройстве или устройстве с приготовлением Prefab), оно больше не функционирует и дает мне ошибку, показанную ниже в изображении и в тексте:
nullReferenceException: ссылка на объект не установлен на экземпляр объекта < /p>
textureChange+< waitforeffectmeshenchengence> d__4.movenext () (At Assets /textureChange.cs: 22) < /p>
вот код, который я использую ниже. Почему у меня есть эта ошибка, и как я могу ее исправить? Кроме того, настройки MRUK:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Meta.XR.MRUtilityKit;
public class TextureChange : MonoBehaviour
{
[SerializeField] private EffectMesh ceilingEffectMesh;
public Material meshMaterial;
public Texture texture1;
// Start is called before the first frame update
void Start()
{
StartCoroutine(WaitForEffectMeshThenChange());
}
private IEnumerator WaitForEffectMeshThenChange()
{
var room = MRUK.Instance.GetCurrentRoom();
while (room.CeilingAnchor &&
!ceilingEffectMesh.EffectMeshObjects.ContainsKey(room.CeilingAnchor))
{
yield return null;
}
var wrapper = ceilingEffectMesh.EffectMeshObjects[room.CeilingAnchor];
var meshGo = wrapper.effectMeshGO;
if (!meshGo)
{
Debug.LogError("No effectMeshGO found on wrapper!");
yield break;
}
meshGo.transform.SetParent(null, /* worldPositionStays= */ true);
meshMaterial = meshGo.GetComponent().material;
meshMaterial.mainTexture = texture1;
}
// Update is called once per frame
//void Update()
//{
// meshMaterial.mainTexture = texture1;
//}
}
< /code>
Вот несколько скриншотов, которые также показывают, как он выглядит, когда он работает и не работает. Как показано, изменение текстуры потолка, если она работает:
Работа с включенной префабацией < /p>
не работает с устройством или устройством с включенным отказа 30 ошибок < /li>
Я попытался переписать код
У меня действительно плохое понимание того, как редактировать определенные теги эффекта, поэтому я много боролся с этим. < /Li>
< /ul>
Подробнее здесь: [url]https://stackoverflow.com/questions/79731524/mruk-mixed-reality-having-trouble-with-editing-effectmesh-of-device-meta-unit[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия