Ошибка "get_main is not allowed to be called from MonoBehaviour" в unity2d

Делал скрипт который создаёт картинку на канвасе, вот скрипт:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class OpenWindow : MonoBehaviour {
    [SerializeField] private GameObject win;
    [SerializeField] private GameObject canvas;
    private Vector3 cp = Camera.main.ScreenToWorldPoint(new Vector3(Camera.main.pixelWidth, Camera.main.pixelHeight, 0f));
    private GameObject lastWin;
    public void ImClicked() {
        lastWin = Instantiate(win, cp/2f, Quaternion.identity);
        lastWin.transform.parent = canvas.transform;
    }
}

но выдаёт ошибку:

get_main is not allowed to be called from MonoBehaviour constructor (or instance field initializer), call it in Awake or Start instead. Called on MonoBehaviour 'OpenWindow' on game object 'Button'**


Ответы (1 шт):

Автор решения: aepot

Вынесите инициализацию полей в Start(). Об этом вам и написано в тексте ошибки: call it in Awake or Start instead.

private Vector3 cp;

void Start()
{
    cp = Camera.main.ScreenToWorldPoint(new Vector3(Camera.main.pixelWidth, Camera.main.pixelHeight, 0f));
}
→ Ссылка