这可能是一个愚蠢的问题,但这是我的场景:我有两个列表,一个包含曲棍球运动员对象,另一个包含棒球运动员对象。
public static List<BaseballPlayer> Baseball List = new List<BaseballPlayer>();
public static List<HockeyPlayer> Hockey List = new List<HockeyPlayer>();
如果按下按钮,我有一个屏幕可以在玩家对象上绘制更多细节(以下是绘制数百行的示例):
GUI.Label(new Rect(x, y, 130, 32),Lists.BaseballPlayer[i].accessPlayerName);
但是,有没有办法动态控制使用哪个列表名称。如下所示:
string one;
然后让绘图调用做这样的事情:
GUI.Label(new Rect(x, y, 130, 32),Lists.one[i].accessPlayerName);
其中字符串1可以定义为&#34; BaseballPlayers&#34;或者&#34; HockeyPlayers&#34;。
我不想复制两个屏幕,一个显示BaseballPlayer列表,一个显示HockeyPlayer列表。如果有一种方法可以动态插入列表名称,那就太棒了。
谢谢!
答案 0 :(得分:1)
嗯,如果内联就足够了。
假设您使用布尔值来确定使用哪个列表:
bool useHockey = true; //control this variable anyway you like, a property, a function, anything you want
然后你可以这样做:
GUI.Label(new Rect(x, y, 130, 32), (useHockey ? Lists.Hockey : Lists.Baseball)[i].accessPlayerName);
答案 1 :(得分:0)
理想的情况是使用继承。由于HockeyPlayer
和BaseballPlayer
都是Player
并且具有一些常见属性,因此最好创建基类并在其中放置公共属性。
之后打印功能会更容易:
public class Player
{
public string Name { get; set; }
}
public class BaseballPlayer : Player
{
//Properties specific to baseball player
}
public class HockeyPlayer : Player
{
//Properties specific to hockey player
}
public void PrintPlayers(List<Player> playerList)
{
for(int i = 0; i < playerList.Count; i++)
{
GUI.Label(new Rect(x, y, 130, 32),playerList[i].Name);
}
}
PrintPlayer(Lists.BaseballPlayers);
PrintPlayer(Lists.HockeyPlayers);