将字符串数组从WWW转换为Unity3d中的类列表
我在将WWW字符串数组转换为类列表时遇到了一些麻烦。我想要做的是实例化一个预制件,其中包含许多文本元素。 这是基础类将字符串数组从WWW转换为Unity3d中的类列表
public class VehicleIndex : MonoBehaviour
{
public string ID{ get; set;}
public string Make{ get; set;}
public string Model{ get; set;}
public string Year{ get; set;}
public string Mileage{ get; set;}
public VehicleIndex(string id, string make, string model, string year, string mileage)
{
this.ID = id;
this.Make = make;
this.Model = model;
this.Year = year;
this.Mileage = mileage;
}
}
下面是从MySQL数据库获取WWW数据的功能
public List<VehicleIndex> VehicleIndexList = new List<VehicleIndex>();
public string[] VehicleStringArray;
public IEnumerator GetAllVehicles()
{
WWW VehicleData = new WWW ("http://localhost/CMVM/LoadVehicle.php");
yield return VehicleData;
Debug.Log (VehicleData.text);
string TheVehicleData = VehicleData.text;
The information comes back just fine.
if(TheVehicleData[TheVehicleData.Length - 1] == '/')
{
TheVehicleData.TrimEnd('/'); Here I'm removing the delimiter
}
string[] results = TheVehicleData.Split(new char[] { '/' }, StringSplitOptions.RemoveEmptyEntries);
for (int i = 0; i < results.Length; i++)
{
Debug.Log (results[i]);
}
VehicleStringArray = results; The results go back into an array
VehicleIndexList = VehicleStringArray.Select(sArr => new VehicleIndex
{
ID=VehicleStringArray[0],
Make=VehicleStringArray[1],
Model=VehicleStringArray[2],
Year=VehicleStringArray[3],
Mileage=VehicleStringArray[4]
}).ToList();
}
它看起来像它应该只是工作,它给人的错误:类型VehicleIndex' does not contain a constructor that takes
0'论据 我错过了什么?我需要为课堂增添些什么吗?一个列表?数组? 感谢您的帮助!对此,我真的非常感激。
ADDITIONAL- 添加对象初始
public VehicleIndex Vi;
然后改变了lambda表达式
VehicleIndexList = VehicleStringArray.Select(sArr => new VehicleIndex
{
Vi.ID==VehicleStringArray[0],
Vi.Make==VehicleStringArray[1],
Vi.Model==VehicleStringArray[2],
Vi.Year==VehicleStringArray[3],
Vi.Mileage==VehicleStringArray[4]
}).ToList();
只有这样,才能避免红线是使用双相等。我不确定这是否正确,因为它仍然不能正常工作,我猜不是。
你有一个构造函数的所有属性作为参数;只是用这个来代替对象初始化:
VehicleIndexList = VehicleStringArray.Select(sArr => new VehicleIndex
(
VehicleStringArray[0],
VehicleStringArray[1],
VehicleStringArray[2],
VehicleStringArray[3],
VehicleStringArray[4]
)).ToList();
但是请注意,这contructors通常只需要那些PARAMATERS需要的对象才能正常工作。如果属性值不是必需的,那么移除构造函数并使用初始化语法(new VehicleIndex { }
)代替没有任何问题。
因此,类似于:VehicleIndex Vi = new VehicleIndex(param1,param2,param3等);然后在lambda Vi.ID = VehicleSt4ringArray [0]中。等等...我在球场D吗?如果没有,请分解它,lambda和WWW阵列对我来说是新的。 –
现在非常困惑。获取错误:由于类型'VehicleIndex'没有实现'System.Collections.IEnumerable'接口 –
无法确定为什么添加'public VehicleIndex Vi;'并且更改了该属性'VehicleIndex'无法用集合对象初始值设定项初始化查询你做的方式。如果你只是将lambda更改为我给你的语法,它应该可以正常工作。要么或者删除你有的构造函数。 –
那么,'VehicleIndex'有一个没有任何参数的构造函数?如果不是,你可以创建一个或在你的'Select'投影中调用一个构造函数。 –
哎呦,贴错了班。 –