Can';t从unity中的另一个C#脚本访问变量

Can';t从unity中的另一个C#脚本访问变量,c#,unity3d,C#,Unity3d,我正在玩unity 3d游戏,遇到了一个问题: 我有两个盒子,分别是breakableBox和breakableBox\u 2。 当玩家与它们发生碰撞时,它们会添加到玩家的分数变量playerScore,框会自动隐藏。以下是两个框使用的代码: using UnityEngine; using System.Collections; public class ExampleClass : MonoBehaviour { public static int playerScore;

我正在玩unity 3d游戏,遇到了一个问题:

我有两个盒子,分别是
breakableBox
breakableBox\u 2
。 当玩家与它们发生碰撞时,它们会添加到玩家的分数变量
playerScore
,框会自动隐藏。以下是两个框使用的代码:

using UnityEngine;
using System.Collections;

public class ExampleClass : MonoBehaviour
{
    public static int playerScore;

    public Renderer rend;

    void Start()
    {
        rend = GetComponent<Renderer>();
        rend.enabled = true;
    }

    void OnTriggerEnter(Collider other)
    {
        rend.enabled = false;
        playerScore++;
    }



}

然而,分数保持为零,即使在控制台中,我可以看到它将分数添加到变量中。如果有人知道如何帮助我解决这个问题,那就太好了。

您没有更新积分类中的
分数,试试这个

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

public class Points : MonoBehaviour {

    void OnGUI()
    {
        int score = ExampleClass.playerScore;
        GUIStyle style = new GUIStyle(GUI.skin.button);
        style.fontSize = 24;
        GUI.Label(new Rect(1, 1, 150, 30), score.ToString() + " points", style);
    }
}

编辑:正如@MXD在评论中提到的,最好不要在
OnGUI
中更新值,而是在
update()
中进行更新[或者
FixedUpdate()
,因为你的分数系统依赖于物理]。

你没有在积分类中更新
分数
int,试试这个

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

public class Points : MonoBehaviour {

    void OnGUI()
    {
        int score = ExampleClass.playerScore;
        GUIStyle style = new GUIStyle(GUI.skin.button);
        style.fontSize = 24;
        GUI.Label(new Rect(1, 1, 150, 30), score.ToString() + " points", style);
    }
}

编辑:正如@MXD在评论中提到的,最好不要在
OnGUI
中更新值,而是在
update()
中进行更新[或者
FixedUpdate()
,因为你的评分系统依赖于物理]。

从性能角度看,最好在更新中调用它,而不是在OnGUI中调用它。由于OnGUI的调用明显多于更新。@MXD是的,他也最好不要像他那样存储分数,但我只是用最少的代码来回答他的具体问题:d我对你的评论投了更高的票。除了好的答案之外,给出好的建议从来都没有坏处;)更准确地说:他/她应该使用ui系统,而不是即时模式gui。从性能角度来看,最好在更新中调用它,而不是在OnGUI中调用。由于OnGUI的调用明显多于更新。@MXD是的,他也最好不要像他那样存储分数,但我只是用最少的代码来回答他的具体问题:d我对你的评论投了更高的票。除了好的答案之外,给出好的建议从来都没有坏处;)更准确地说:他/她应该使用用户界面系统,而不是即时模式的用户界面。最好将分数更改设置为一个事件。因此,您可以让您的不同脚本订阅该事件,这样分数只有在更改时才会更新。停止使用OnGui,改为使用。最好将分数更改设置为事件。因此,您可以让您的不同脚本订阅该事件,这样分数只有在更改时才会更新。停止使用OnGui,改用。