【问题标题】:Why isn't this variable being recognized by the compiler? [duplicate]为什么编译器不能识别这个变量? [复制]
【发布时间】:2019-02-17 14:50:05
【问题描述】:

我正在Unity2D中制作一个简单的游戏,即使经过多次尝试,仍然出现CS0120错误。

我已经浏览了一些教程/帮助,但它们都没有真正帮助我,我不想再弄乱我的代码。

//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
        {                    
        }                
    }   
}

我预计变量放置/调用会出现一些小错误

【问题讨论】:

  • Terraform.TerraformClick -> TerraformClick。它是一个非static 成员变量
  • 在任意尝试任何进一步的尝试之前,请努力了解什么错误 CS0120 及其错误消息准确地告诉你什么是错误的 which代码行...
  • 它还有助于告诉我们整个编译器错误消息,而不仅仅是 ID。

标签: c# unity3d


【解决方案1】:

你在正确的轨道上。只是您必须在Awake 函数的外部 声明'terraformScript'。您仍然可以在Awake 函数内初始化它,但它应该在该函数之外声明。这是因为您不仅希望该变量仅存在于 Awake 函数中,对吗?不,您还希望您的更新功能也可以访问它。因此,只需在脚本顶部声明它,以便您的所有函数也可以访问它。我们称这些变量为成员变量

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;
        }
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-05-04
    • 1970-01-01
    • 2018-01-05
    • 1970-01-01
    • 2018-08-25
    • 2018-12-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多