Как можно создать объект класса MonoBehaviour в Unity?

  • 30 августа 2023 г. 13:16
Ответы на вопрос 2
Для вызова метода GetCoords() из класса Controller в классе HookController вам необходимо получить ссылку на экземпляр класса Controller.

Если объект класса Controller уже присутствует на сцене, вы можете найти его с помощью функции FindObjectOfType<Controller>():

```csharp
using UnityEngine;

public class HookController : MonoBehaviour
{
    private Controller controller;

    private void Start()
    {
        controller = FindObjectOfType<Controller>();
        if (controller != null)
        {
            controller.GetCoords();
        }
    }
}
```

Если объект класса Controller будет создан программно во время выполнения, вам нужно будет добавить компонент Controller к новому объекту с помощью AddComponent<Controller>():

```csharp
using UnityEngine;

public class HookController : MonoBehaviour
{
    private Controller controller;

    private void Start()
    {
        GameObject controllerObject = new GameObject("ControllerObject");
        controller = controllerObject.AddComponent<Controller>();
        controller.GetCoords();
    }
}
```

Оба подхода позволяют вызывать метод GetCoords() из класса Controller в классе HookController.
AddComponent может быть применен ко всем объектам GameObject, уже существующим на сцене. Создание новых объектов с использованием оператора new не требуется. Какую проблему решает этот метод?
Похожие вопросы