c# - 基于列表的任务系统
问题描述
大家好,我正在尝试统一建立一个基于列表的任务系统。除了这里的这段代码之外,一切都在工作:
for (int i = currentPoints; i >= 0; i++)
{
if (Quests[i].pointsRequired <= currentPoints)
{
Debug.Log("ping");
currentQuestid += 1;
}
}
我不太清楚为什么,但任何建议或帮助都会非常感谢!
完整脚本:
公共类 questManager : MonoBehaviour { public int currentQuestid;
[System.Serializable]
public class Quest
{
public int pointsRequired;
public GameObject objects;
public int questID;
public string objective;
public string pointName;
public string info;
public float waitTime;
public bool enabled = false;
public Text objectiveText;
public Text remainingText;
public Text infoText;
}
public Quest[] Quests;
public int currentPoints;
public float currentdelay;
public int required;
void Start()
{
currentQuestid = 0;
currentPoints = 0;
for (int i = 0; i < Quests.Length; i++)
{
Quests[i].objectiveText.text = Quests[i].objective;
}
}
void Update()
{
for (int i = 0; i < Quests.Length; i++)
{
Quests[i].objects.SetActive(i == currentQuestid);
}
for (int i = 0; i < Quests.Length; i++)
{
Quests[i].remainingText.text = Quests[i].pointName + ": " + currentPoints + "/" + Quests[i].pointsRequired;
}
for (int i = currentPoints; i >= 0; i++)
{
if (Quests[i].pointsRequired <= currentPoints)
{
Debug.Log("ping");
currentQuestid += 1;
}
}
}`
解决方案
for
循环中的简单错字:
for (int i = currentPoints; i >= 0; --i)
{
//Be safe
if (Quests.Length <= i)
continue;
if (Quests[i].pointsRequired <= currentPoints)
{
Debug.Log("ping");
currentQuestid += 1;
}
}
具体来说,您要递减i
,而不是递增。
推荐阅读
- python-3.x - Spark worker 和 Spark 驱动程序中的 python 版本不匹配
- recaptcha - Google Recaptcha v2 获取请求失败
- bash - 在循环条件下同时 Grep 和打印到标准输出
- sql - 如何通过多个选择查询设置声明的参数
- mysql - 我无法在 mariadb 上导入数据
- javascript - JS引用数组对象我在做什么错?arra
- opengl - 用于读取和写入的 OpenGL 缓冲区使用
- javascript - Javascript 在不知道名称的情况下更改 Photoshop 中的第一层名称
- c++ - C ++比较阴影贴图矩阵与绘制矩阵不会产生阴影
- r - 如何在R中通过ID计算分类法术的数量和持续时间