Can';t从unity中的另一个C#脚本访问变量
我正在玩unity 3d游戏,遇到了一个问题: 我有两个盒子,分别是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;
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,改用。