Public Static Boolean不会出现在Inspector中

时间:2016-05-09 15:43:59

标签: c# debugging variables unity3d static

我已经查看并查找并寻找答案,但无论我尝试什么,我都无法将此布尔变量显示在检查器中。我试图将变量公开,以便我可以诊断我的游戏中的错误。如果我在另一个脚本中显示完全相同的变量,它会显示,但由于某种原因,这个不会。

这是我的代码:

public class LB : MonoBehaviour {
    public static bool canStep;

    void Start (){
        canStep = true;
    }

    void OnTriggerExit (Collider tf){
        if (tf.gameObject.name == "Player") {
            canStep = false;
        }
    }
}

3 个答案:

答案 0 :(得分:0)

只是

 public bool canStep;

这就是它的全部。 (切勿在Unity中使用“静态”。)

您的课程不得称为“LB”。它应该被称为“LongBoard”,或者不管是什么情况。

请注意。我猜你需要从另一个脚本访问“canStep”。让我们说,来自另一个名为Jumping的MonoBehaviour。就这样做

public class LB : MonoBehaviour
{
public LongBoard longBoard; // DRAG TO CONNECT in Inspector

.. and then ..

 void Example()
 {
 if ( longBoard.canStep )
   {
   }
 }

}

答案 1 :(得分:0)

为什么你使用静态关键字,你不需要变量是静态的,以便被其他脚本操纵,它们只需要公开。只是在检查员中分配了它,所以你已经完成所有设置,你通常不应该使用静态,除非你只指一个实例或者你知道你在做什么。

答案 2 :(得分:0)

您可以直接在检查器中显示静态变量,如Dreamora在此thread中所述:

  

不,只有monobehaviour实例变量才显示不是类变量   与对象上的组件完全无关   技术上

但实际上这是在检查器中观察静态var的技巧。使用另一个非静态var来简单地观察检查器中的静态var。

public static int myStaticVart;
public int myStaticVarInspector;
void Update()
{
    myStaticVarInspector = myStaticVart.
}