我正在用C#做一个像客观列表的东西。 我得到了它的所有工作,能够在Unity内绘制客观列表,并与他们一起制定新的目标。我对如何删除一些东西有一个想法,我用System.Linq
和List.First函数来搜索它。但它似乎并不奏效。List.First不返回任何东西,虽然有东西
这是'完成和创建目标'代码。
public void NewObjective(string objectiveText, string objName)
{
objectives.Add(new Objective(objectiveText, objName)); //Add to the list Objective.
middleText("New Objective: " + objectiveText); //Display text on screen.
}
public void FinishObjective(string shortObj)
{
var value = objectives.First(x => x.ObjectiveName.Contains(shortObj));
string completedTask = value.objectiveDescription;
middleText("Completed Objective: " + completedTask); //Display text on screen.
objectives.Remove(value); //Remove value. (Which doesn't find anything for some reason, so it can't delete anything from the list.)
}
然后在另一个班级,我有一个新的目标,就像这样。
(我还包含一个objectiveID
方法,但我省略了方便。)
在同一班级,当玩家完成某事,我有这个。
GameController.gameController
.GetComponent<GameController>()
.FinishObjective("foo"); //This has two possible methods,
the object ID (if defined) or the name of the objective.
怎么回事,我做错了什么,我该怎么办才能解决这个问题? 感谢您的帮助。
编辑: 没有实际的错误。只是它没有找到任何东西,而有些东西。目标很容易定义为List objectives = new List();在课堂上。
这是目标类:
public class Objective : MonoBehaviour
{
public string objectiveDescription;
public string ObjectiveName;
public int ObjectiveID;
public Objective(string objective, string objectiveName)
{
objectiveDescription = objective;
ObjectiveName = objectiveName;
}
public Objective(string objective, string objectiveName, int objectiveID)
{
objectiveDescription = objective;
ObjectiveName = objectiveName;
ObjectiveID = objectiveID;
}
}
哪里是你的实际的错误?描述不良行为和你期望看到的。另外,如何定义目标。 – 2015-04-01 19:29:53
没有实际的错误。只是它没有找到任何东西,而有些东西。目标很容易定义为'List goals = new List ();'在课堂内部。 –
Stepepper
2015-04-01 19:41:07
如果First没有找到某个东西,那么在调用'value.objectiveDescription'时应该会发生异常。呼叫'First'后'value'是什么? – 2015-04-01 19:42:44