繁体   English   中英

将字符串数组从WWW转换为Unity3d中的类列表

[英]Converting a string array from WWW to a class list in Unity3d

我在将WWW字符串数组转换为类列表时遇到麻烦。 我想做的是实例化一个其中包含许多文本元素的预制件。 这是基类

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类型VehicleIndex' does not contain a constructor that takes 0参数作为参数VehicleIndex' does not contain a constructor that takes我缺少什么? 我需要在课堂上添加一些内容吗? 一个列表? 数组? 谢谢您的帮助! 我真的很感激。

附加-添加了对象初始化器

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();

避免出现红线的唯一方法是使用double equal。 我不确定这是否正确,因为它仍然无法正常工作,我猜测是不正确的。

您有一个将所有属性用作参数的构造函数; 只需使用它而不是对象初始化器即可:

    VehicleIndexList = VehicleStringArray.Select(sArr => new VehicleIndex 
    (
        VehicleStringArray[0],
        VehicleStringArray[1],
        VehicleStringArray[2],
        VehicleStringArray[3],
        VehicleStringArray[4]
    )).ToList();

但是请注意,构造函数通常仅需要对象正常运行所需的参数。 如果不需要属性值,则删除构造函数并使用初始化语法( new VehicleIndex { } )没什么错。

这与JavaScript的join()基本相同

String.Join方法

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM