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

How to set a variable to an indexed member of a list

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

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

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

要获取变量,只需执行以下操作:

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