所以我在当前正在制作的 Unity 项目中遇到了问题
我有一个数据表,其中包含脚本中不同部分 [Weight,Products,...] 的统计信息
在这个数据库中有多个我创建的元组。例如我的推力 Tuple<string, int>
在数据库中(第六行)这个元组被分配了这个:
Tuple.Create("WASD",1)
WASD 是推进器可以发射的方向,1 是强度。
在我的代码的一部分中,我想将第二个值 (1) 添加到一个变量中。 但是它只是不起作用。 如果我打印出元组,我会得到:
(WASD, 1)
UnityEngine.MonoBehaviour:print(Object) Master:Start() (at Assets/Scripts/Master.cs:68)
女巫很好
但是我无法访问它。它说它是一个对象,但如果我这样做 GetType()
我得到:
System.Tuple`2[System.String,System.Single]
我无法使用 Item2
访问它或 Item1
.
它只是 (WASD,1)
BStats.Columns.Add(new DataColumn("Block", typeof(string)));
BStats.Columns.Add(new DataColumn("live", typeof(float)));
BStats.Columns.Add(new DataColumn("Weight", typeof(float)));
BStats.Columns.Add(new DataColumn("Products", typeof(Tuple<string,float>)));
BStats.Columns.Add(new DataColumn("Thrust", typeof(Tuple<string,float>)));
BStats.Columns.Add(new DataColumn("Consume", typeof(Tuple<string, float>)));
BStats.Columns.Add(new DataColumn("Desc", typeof(string)));
BStats.Rows.Add("Energy",1F,3F,Tuple.Create("Energy",1.0F),Tuple.Create("NAN",0F),
Tuple.Create("Thori um", 0.1F), "a Thorium Reactor");
BStats.Rows.Add("Armor", 5F, 4F, Tuple.Create("NAN", 0F), Tuple.Create("NAN", 0F),
Tuple.Create("NAN", 0F), "a simple Armor block");
BStats.Rows.Add("Engine", 2F, 2F, Tuple.Create("NAN", 0F), Tuple.Create("WASD", 1F),
Tuple.Create("Fuel", 0.2F), "a space engine");
BStats.Rows.Add("Gun", 1.5F, 0.5F, Tuple.Create("NAN", 0F), Tuple.Create("NAN", 0F),
Tuple.Create("Energy", 0.5F), "a simple laser Gun");
BStats.Rows.Add("Command Capsule", 3F, 5F, Tuple.Create("NAN", 0F), Tuple.Create("NAN", 0F),
Tuple.Create("Energy", 0.1F), "the Heart of your spaceship.");
print(BStats.Rows[2][4])
我是 Unity 的新手,所以这将是一个愚蠢的错误,或者我使用数据表的方式是错误的。
最佳答案
DataRow
的索引器有 return type的 object
所以你需要 cast它到Tuple<string,float>
:
var tuple = (Tuple<string,float>)BStats.Rows[2][4];
Cosole.WriteLine(tuple.Item1)
关于c# - 数据表获取元组作为对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63124586/