如何将变量设置为列表的索引成员

时间:2015-06-30 14:26:26

标签: c# list unity3d game-engine

我正在尝试为播放器消息和提示创建消息队列。 目标是游戏中的任何对象都可以添加要显示的项目,它应该处理请求。仅供参考 - 在编码/ 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);
}

问题是,如何找出列表的第一个成员,然后引用存储的变量,以便我可以使用它们?

1 个答案:

答案 0 :(得分:0)

列表的第一个成员是goalMessagesList[0]goalMessagesList.First()goalMessagesList.FirstOrDefault()

要获取变量,只需执行:

string tts = goalMessagesList[0].textToShow;
int dts = goalMessagesList[0].durationToShow;
bool sfx = goalMessagesList[0].specialFX;