unity3d - 一旦剩下的项目等于零,如何显示获胜面板?
问题描述
一旦itemLeft = 0,我想在游戏中显示获胜面板。但仍然无法弄清楚错误是如何以及是什么。下面显示了我的 getScore 编码:-
public GameObject scoretext;
public GameObject itemlefttext;
public GameObject finalScore;
public static float score = 0;
public GameObject winPanel;
private void Start()
{
scoretext.GetComponent<Text>().text = "0";
setscore(0);
}
private void Update()
{
itemlefttext.GetComponent<Text>().text = "" + GameObject.FindGameObjectsWithTag("draggableobject").Length;
if (GameObject.FindGameObjectsWithTag("draggableobject").Length == 0)
{
winPanel.SetActive(true);
}
}
public void setscore(float scoretoadd)
{
score += scoretoadd;
scoretext.GetComponent<Text>().text = score.ToString("F0");
finalScore.GetComponent<Text>().text = score.ToString("F0");
}
解决方案
有很多方法可以实现这一点。
使用您当前的代码结构:
private void Update()
{
itemlefttext.GetComponent<Text>().text = ""+GameObject.FindGameObjectsWithTag("draggableobject").Length;
//itemLeftTxt = GameObject.FindGameObjectWithTag("Text").GetComponent<Text>();
itemLeftTxt.text = gameObject.GetComponent<Text>().text;
if (itemLeftTxt.text == "0")
{
winPanel.SetActive(true);
}
}
小改进:
private void Update()
{
itemlefttext.GetComponent<Text>().text = "" + GameObject.FindGameObjectsWithTag("draggableobject").Length;
//itemLeftTxt = GameObject.FindGameObjectWithTag("Text").GetComponent<Text>();
itemLeftTxt.text = gameObject.GetComponent<Text>().text;
if (GameObject.FindGameObjectsWithTag("draggableobject").Length == 0)
{
winPanel.SetActive(true);
}
}
如果这些可拖动对象不是在运行时生成的,那么您可以创建一个公共变量并通过检查器为它们分配引用或
新的方法:
public GameObject[] DraggableObjects;
将此添加到启动功能:
DraggableObjects = GameObject.FindGameObjectsWithTag("draggableobject");
itemLeftTxt = gameObject.GetComponent<Text>();
您可以删除额外的代码行:
最终更新功能:
private void Update()
{
itemlefttext.text = "" + DraggableObjects.Length;
if (DraggableObjects.Length == 0)
{
winPanel.SetActive(true);
}
}
最终启动功能:
private void Start()
{
DraggableObjects = GameObject.FindGameObjectsWithTag("draggableobject");
itemLeftTxt = GetComponent<Text>();
}
PS:在更新中调用 Gameobject.FindGameObjectsWithTag 会对处理器造成负担。让我知道它是否有帮助。
推荐阅读
- jquery - jQuery没有成功重置表单
- flutter - 如何在 Flutter 中正确放置一个红色椭圆?
- python - Python 输入与列表比较
- javascript - DOM 方法从节点获取正确的元素 - 仅使用 JavaScript
- python - 获取文件路径的最后 n 部分
- python - 如何使用经过训练的 CNN 对新图像进行分类?
- reactjs - 打字稿中的嵌套导出
- c++ - 我的 Snake 游戏在您吃苹果时崩溃,苹果在您选择新位置后会在您体内生成(C++,SDL)
- javascript - R Shiny 中的数据表:在 JavaScript 的帮助下,使用 KeyTable 扩展从数据表中读取标记的单元格
- javascript - 我正在阅读的 Django 会议记录是一个月?