在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);
}
在此先感谢!
添加到您的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;
}
单独的答案,但我会保持它在同一篇文章中。
在GetBrakeData
BrakeWheelField
是不是你的全局变量,但是在参数传递给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);
}
谢谢Chuck!我认为我必须在单身人士身上做类似的事情。目前,这不是保存,而是通过GetBrakeData函数实现的。 –
查克,你是对的!当我插入数据库以及单例时,我不得不添加一个this.BrakeWheelField。然后它工作! –
您可以创建一个单元测试你的方法,来验证,如果你给他们,他们返回预期的答案正确的价值观,和他们做如果给予无效的输入内容。查找“统一单元测试”以获取更多信息。 –
当我们没有看到更多可能导致错误的东西时,真的很难为您调试您的代码。 IE浏览器我们没有看到如何调用GroupDropSelection,以及接收返回的字符串的内容。 'GroupDropSelection'和'GetBrakeData'之间发生什么 –