C# 为什么编译器不能识别这个变量?
我正在Unity2D中制作一个简单的游戏,即使经过多次尝试,CS0120错误仍然会发生 我已经看过了一些教程/帮助,但是没有一个对我有真正的帮助,我不想把我的代码搞得更糟C# 为什么编译器不能识别这个变量?,c#,unity3d,C#,Unity3d,我正在Unity2D中制作一个简单的游戏,即使经过多次尝试,CS0120错误仍然会发生 我已经看过了一些教程/帮助,但是没有一个对我有真正的帮助,我不想把我的代码搞得更糟 //This is the one which I want to call the var from public class Terraform : MonoBehaviour { public int TerraformClick; void Start() { }
//This is the one which I want to call the var from
public class Terraform : MonoBehaviour
{
public int TerraformClick;
void Start()
{
}
void Update()
{
if(Input.GetMouseButtonDown(1))
{
TerraformClick = 1;
}
}
}
//And this is the main script
public class Grass_Follow : MonoBehaviour
{
void Awake()
{
GameObject TerraformButt = GameObject.Find("Terraform");
Terraform terraformScript = TerraformButt.GetComponent<Terraform>(); //finding the object
}
void Update()
{
//probably some mistake in calling the variable
if (Terraform.TerraformClick == 1)
{
Vector3 pz =
Camera.main.ScreenToWorldPoint(Input.mousePosition);
pz.z = 0;
transform.position = pz;
}
else
{
}
}
}
我想这只是一个小小的错误,因为变量的位置/调用你走对了方向。只是您必须在Awake函数之外声明“terraformScript”。您仍然可以在Awake函数内初始化它,但它应该在该函数外声明。这是因为您不希望该变量只存在于Awake函数中,是吗?不。您还希望您的更新功能也可以访问它。所以只需在脚本顶部声明它,这样所有函数都可以访问它。我们称这些变量为成员变量
Terraform.TerraformClick->TerraformClick。它是一个非静态的成员变量在随意尝试任何进一步的操作之前,请努力理解错误CS0120及其错误消息确切地告诉您哪些代码行有什么问题……它还可以帮助告诉我们整个编译器错误消息,而不仅仅是ID。
using UnityEngine;
public class Grass_Follow : MonoBehaviour
{
Terraform terraformScript;
void Awake()
{
GameObject TerraformButt = GameObject.Find("Terraform");
terraformScript = TerraformButt.GetComponent<Terraform>();
}
void Update()
{
if (terraformScript.TerraformClick == 1)
{
Vector3 pz = Camera.main.ScreenToWorldPoint(Input.mousePosition);
transform.position = pz;
}
}
}