统一脚本可以只是一个公共变量吗

时间:2019-04-26 10:23:44

标签: c# variables unity3d methods

我试图添加一个脚本,该脚本将全局损坏等级附加到对象上,但是该脚本出现了控制台错误,

  

错误CS0120:非静态需要对象引用       字段,方法或属性AttackStat.atk

所以我很困惑,是否有一个我没有遇到的统一脚本的要求,或者我对统一编程很陌生

感谢您的时间

Attackstat.cs

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

public class AttackStat : MonoBehaviour
{
    public float atk;

}

2 个答案:

答案 0 :(得分:1)

答案为是,请检查Static Members

public class AttackStat : MonoBehaviour
{
    public static float atk;
}

答案 1 :(得分:1)

解决方案1:

如错误消息所述,atk是类AttackStat的实例成员,您需要创建该类的实例/对象才能访问它们。

例如:

AttackStat attackStatInstance = new AttackStat();
float  vlueObject = attackStatInstance.atk // It is accessible now 

解决方案2:

如果您确实要使用atk而不创建实例(例如AttackStat.atk),则应将变量定义为静态,这意味着定义将如下所示:

public class AttackStat : MonoBehaviour
{
    public static float atk;
}