# V3205. Unity Engine. Improper creation of 'MonoBehaviour' or 'ScriptableObject' object using the 'new' operator. Use the special object creation method instead.

Анализатор обнаружил нежелательное создание экземпляра классов 'MonoBehaviour' или 'ScriptableObject' с помощью оператора 'new'. Объекты, созданные таким образом, не будут связаны с движком, поэтому такие специфичные Unity-методы, как 'Update', 'Awake', 'OnEnable' и прочие, вызываться не будут.

Ниже приведён пример:

    class ExampleSO: ScriptableObject
    ....
    class ExampleComponent: MonoBehaviour
    ....
    void Awake
    {
      var scriptableObject = new ExampleSO();
      var component = new ExampleComponent();
    }

Чтобы избежать потенциальных проблем, вместо оператора 'new' для создания экземпляров этих классов следует использовать один из следующих методов:

- 'GameObject.AddComponent' — для создания экземпляра класса 'MonoBehaviour';
- 'ScriptableObject.CreateInstance' — для создания экземпляра класса 'ScriptableObject'.

Исправленный код:

    class ExampleSO: ScriptableObject
    ....
    class ExampleComponent: MonoBehaviour
    ....
    void Awake
    {
      var scriptableObject = ScriptableObject.CreateInstance<ExampleSO>();
      var component = this.gameObject.AddComponent<ExampleComponent>();
    }