你得到了那个特别的错误,因为
mainCamera
是在中定义的局部变量
Start
. 它超出了您试图引用它的范围
Update
. 您可能打算将它定义为类中的一个字段,因此可以使用
主摄像机
在你班的任何地方。要做到这一点,您应该改为:
// ...
private Rigidbody2D myRigidbody;
private Animator myAnim;
private static bool playerExists;
public GameObject cameraPrefab;
public GameObject mainCamera; // add this line
private void Start()
{
myRigidbody = GetComponent<Rigidbody2D>();
myAnim = GetComponent<Animator>();
if(!playerExists){
playerExists = true;
DontDestroyOnLoad(transform.gameObject);
} else {
Destroy(gameObject);
}
targetPos = transform.position;
mainCamera = (GameObject)Instantiate(cameraPrefab); // use mainCamera field
mainCamera.tag = "MainCamera"; // tell Unity that it is your main camera.
}
// ...
但无论如何,
Camera.main
是的静态属性
Camera
类,因此您应该通过
照相机
不管怎样上课。
你应该把这个用在
更新
而是:
targetPos = (Vector2)Camera.main.ScreenToWorldPoint(Input.mousePosition);