修复:
Dictionary<string, Dictionary<string, object>> saveState = new Dictionary<string, Dictionary<string, object>>();
不要介意这部分:
我有一些要保存到播放器中的数据。
此数据包含玩家需要阅读的级别,但是当我为级别创建UI元素时,我不想做很多功能,我想使其变得更容易,以便只需调用一个迭代级别的函数,然后根据多少个级别创建一定数量的帧即可。
我想计算有多少个关卡,以便可以“自动化”此框架创建过程,并且需要获取关卡数据(如果已完成等操作)。
在PlayerData = new SetupData
里面有一行,行Levels = new Levels
,在那一行中,我有两个类,无论是什么Level1 = new Level
的对象,还有一个Level2 = new Level
,我想计算多少其中有脚本的人。
如果我要再添加5个Level2 = new Level
,但要添加level3,level4等。我希望计算机知道Levels = new Levels
里面有多少个
基本上:
Levels {
Level1 = {Completed = true},
Level2 = {Completed = true},
Level3 = {Completed = true},
}
计数脚本:
Levels.Length // -- prints there are 3 levels.
这只是玩家数据:
public static SaveManager Instance { set; get; }
public SetupData state;
public object PlayerData;
PlayerData = new SetupData
{
// Level Data
Levels = new Levels
{
Level1 = new Level
{
Name = "First Level",
Progress = 0,
Completed = false
},
Level2 = new Level
{
Name = "Second Level",
Progress = 0,
Completed = false
},
},
// Character Data
Player = new Player
{
SelectedColor = 0,
Berries = 0
}
};
问题是这不是列表或其他内容,所以我不能使用.Length
SaveState脚本:
[Serializable]
public class Level
{
public string Name;
public int Progress;
public bool Completed;
}
[Serializable]
public class Levels
{
public Level Level1;
public Level Level2;
}
[Serializable]
public class Player
{
public int SelectedColor;
public int Berries;
}
[Serializable]
public class SetupData
{
public Levels Levels;
public Player Player;
}
答案 0 :(得分:1)
从这个问题很难说出你在问什么;请尝试澄清问题。
我最好的猜测是您在问“我如何以编程方式计算类型为Levels
的类型为Level
的字段数?”如果不是您的问题,请澄清。
您是这样做的:
using System;
using System.Linq;
class Level { }
class Levels
{
public Level level1;
public Level level2;
}
public class Program
{
public static void Main()
{
Console.WriteLine(
typeof(Levels)
.GetFields()
.Count(f => f.FieldType == typeof(Level)));
}
}