在Unity3d中将下拉菜单保存到SQLite数据库

问题描述:

在这里遇到一些麻烦,希望有人可以提供帮助。我有一个下拉菜单,我可以从字段中获取数据,只有当保存功能关闭时,才会保存,信息为空。我试图设置它的功能返回字符串,只有我采取int来显示选择号码,所以它不兼容。有什么想法吗?是的,字符串是公开的。在Unity3d中将下拉菜单保存到SQLite数据库

public string GetDropSelection(int index) 
{ 
    Debug.Log(index); 
    switch (index) 
    { 
     case 1: BrakeWheelField="Front"; 
     break; 

     case 2: BrakeWheelField="Rear"; 
     break; 

     case 3: BrakeWheelField="Both"; 
     break; 
    } 
    return BrakeWheelField; //I know this technique doesn't work because what is coming in is not what's going out. 
    Debug.Log("What is the selection?" + BrakeWheelField); //Variable has the value here. 
} 

public void GetBrakeData(string BrakeWheelField) 
{ 
    Debug.Log(BrakeWheelField); //By the time it gets to here, it's blank. 

    BrakeDateofPurchaseField=BrakeDateofPurchaseText.text; 
    BrakeMileageField=BrakeMileageText.text; 
    BrakeLocationField=BrakeLocationText.text; 
    BrakeLaborField=BrakeLaborText.text; 
    BrakeBrandField= BrakeBrandText.text; 
    BrakePriceField= BrakePriceText.text; 
    BrakeNotesField = BrakeNotesText.text; 

    DatabaseManager.Instance.SQLiteInit(); 
    DatabaseManager.Instance.SaveBrakeInfo(BrakeDateofPurchaseField, BrakeMileageField, BrakeLocationField, BrakeLaborField, BrakeBrandField, BrakePriceField, BrakeWheelField, BrakeNotesField); 

} 

在此先感谢!

+0

您可以创建一个单元测试你的方法,来验证,如果你给他们,他们返回预期的答案正确的价值观,和他们做如果给予无效的输入内容。查找“统一单元测试”以获取更多信息。 –

+0

当我们没有看到更多可能导致错误的东西时,真的很难为您调试您的代码。 IE浏览器我们没有看到如何调用GroupDropSelection,以及接收返回的字符串的内容。 'GroupDropSelection'和'GetBrakeData'之间发生什么 –

添加到您的switch语句a default以查看您是否获得除1,2或3之外的索引 - 如此。

switch (index) 
{ 
    case 1: BrakeWheelField="Front"; 
    break; 

    case 2: BrakeWheelField="Rear"; 
    break; 

    case 3: BrakeWheelField="Both"; 
    break; 

    default: 
      Debug.Log("GroupDropSelection invalid index: "+index); 
    break; 
} 

或者将默认值添加到您的其他案例之一,如果您希望它默认为该答案。如

switch (index) 
{ 
    default: // Make "Front" the default for other cases than 1,2or3 
    case 1: BrakeWheelField="Front"; 
    break; 

    case 2: BrakeWheelField="Rear"; 
    break; 

    case 3: BrakeWheelField="Both"; 
    break; 
} 

单独的答案,但我会保持它在同一篇文章中。

GetBrakeDataBrakeWheelField是不是你的全局变量,但是在参数传递给GetBrakeData局部变量。如果你给GetBrakeData一个空值,那么方法中的BrakeWheelField也是如此。在Debug.Log中,如果您在BrakeWheelData之前与this.一起获得全局值。见我的编辑:

public void GetBrakeData(string BrakeWheelField) 
{ 
    Debug.Log(BrakeWheelField); // GetBrakeData's local BrakeWheelField 
    Debug.Log(this.BrakeWheelField); // the global value for BrakeWheelField 

    BrakeDateofPurchaseField=BrakeDateofPurchaseText.text; 
    BrakeMileageField=BrakeMileageText.text; 
    BrakeLocationField=BrakeLocationText.text; 
    BrakeLaborField=BrakeLaborText.text; 
    BrakeBrandField= BrakeBrandText.text; 
    BrakePriceField= BrakePriceText.text; 
    BrakeNotesField = BrakeNotesText.text; 

    DatabaseManager.Instance.SQLiteInit(); 
    DatabaseManager.Instance.SaveBrakeInfo(BrakeDateofPurchaseField, BrakeMileageField, BrakeLocationField, BrakeLaborField, BrakeBrandField, BrakePriceField, BrakeWheelField, BrakeNotesField); 

} 
+0

谢谢Chuck!我认为我必须在单身人士身上做类似的事情。目前,这不是保存,而是通过GetBrakeData函数实现的。 –

+1

查克,你是对的!当我插入数据库以及单例时,我不得不添加一个this.BrakeWheelField。然后它工作! –