我正在用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