Мне интересно, что я делаю, что вызывает это известное предупреждение:
You are trying to create a MonoBehaviour using the 'new' keyword. This is not allowed. MonoBehaviours can only be added using AddComponent(). Alternatively, your script can inherit from ScriptableObject or no base class at all.
Я знаю, что могу просто использовать Addcomponent<T>
, чтобы избежать этого logwarning. Я также понимаю, что единство не позволяет создавать экземпляры чего-либо, унаследованного от монобиха ( ref ).
Однако следует сказать, что сейчас все тесты, обеспечивающие это logwarning, работают нормально, я просто хочу избавиться от предупреждения.
Это пример теста, который выдает эту ошибку.
[Test]
public void HandleHoverSetsCurrentInteractableOnInteractor()
{
/// Arrange
GameObject actor;
actor = new GameObject();
actor.AddComponent<XRController>();
GameObject actable;
actable = new GameObject();
Handle h = actable.AddComponent<Handle>();
h.Hover(actor.GetComponent<IActor>());
/// Assert
Assert.IsNotNull(actor.GetComponent<IActor>().currentInteractable);
}
Теперь, как уже упоминалось ранее, это работает именно так, как я и ожидал, и это создание GameObject и тестирование функциональности Hover. Это просто дает мне то, что logwarning каждый раз, когда я делаю это. Поэтому мне интересно, есть ли правильный способ сделать это? желательно без ссоры.