我正在尝试为播放器消息和提示创建消息队列。 目标是游戏中的任何对象都可以添加要显示的项目,它应该处理请求。仅供参考 - 在编码/ c#方面,我几乎都是一个菜鸟,所以现在只想尝试一下概念和语法,所以开始时我的整个方法可能都是错的!
我决定使用列表来做。
List<GoalMessage> goalMessagesList = new List<GoalMessage>();
public static class GoalMessage : IComparable<GoalMessage>{
public string textToShow;
public int durationToShow;
public bool specialFX;
public GoalMessage (string myTextToShow, int myDurationToShow, bool mySpecialFX)
{
textToShow = myTextToShow;
durationToShow = myDurationToShow;
victoryFX = mySpecialFX;
}
}
然后我在列表中创建一些测试条目:
void Start () {
goalMessagesList.Add(new GoalMessage("List Item 1",2,false));
goalMessagesList.Add(new GoalMessage("List Item 2 + FX",2,true));
goalMessagesList.Add(new GoalMessage("List Item 3",2,false));
goalMessagesList.Add(new GoalMessage("List Item 4 + FX",2,true));
goalMessagesList.Add(new GoalMessage("List Item 5",2,false));
goalMessagesList.Add(new GoalMessage("List Item 6 + FX",2,true));
}
并且在更新中我尝试抓取列表的第一个成员,将其抛入我的文本显示处理程序,因此它是一个FIFO样式处理程序。
void Update () {
if (textOn){
break;
}
else if (goalMessagesList.Count>0){
tempListItemToShow = goalMessagesList.FindIndex(0); //// ARGH - LOST HERE! /////
}
StartCoroutine(TextHandler (tempListItemToShow.textToShow, tempListItemToShow.durationToShow, tempListItemToShow.specialFX));
goalMessagesList.RemoveAt(0);
}
问题是,如何找出列表的第一个成员,然后引用存储的变量,以便我可以使用它们?
答案 0 :(得分:0)
列表的第一个成员是goalMessagesList[0]
或goalMessagesList.First()
或goalMessagesList.FirstOrDefault()
。
要获取变量,只需执行:
string tts = goalMessagesList[0].textToShow;
int dts = goalMessagesList[0].durationToShow;
bool sfx = goalMessagesList[0].specialFX;