我目前正在开发一个应用程序,用户可以在其中查看所有产品,可以查看单个产品并可以下载特定产品。
这是我的代码:
IEnumerator ButtonClicked(int num, string name, string url, string color, string size, string price, string description)
{
prodName.text = name.ToString ();
prodColor.text = color.ToString ();
prodSize.text = size.ToString ();
prodPrice.text = price.ToString ();
prodDesc.text = description.ToString ();
string Url = url;
WWW www = new WWW (Url);
yield return www;
Texture2D texture = www.texture;
Image img = prodImg.GetComponent<Image> ();
img.sprite = Sprite.Create (texture, new Rect (0, 0, texture.width, texture.height), Vector2.zero);
string name2 = name.ToString ();
Debug.Log (name2.ToString ());
downloadButton.onClick.AddListener (() => StartCoroutine (onDownloadClick (name2.ToString ())));
}
IEnumerator onDownloadClick(string name) {
using (IDbConnection dbConnection = new SqliteConnection (conn)) {
dbConnection.Open ();
using (IDbCommand dbCmd = dbConnection.CreateCommand ()) {
string sqlQuery = String.Format ("INSERT INTO PRODUCTS(Name) VALUES(\"{0}\")", name);
dbCmd.CommandText = sqlQuery;
dbCmd.ExecuteScalar ();
dbConnection.Close ();
}
}
yield return new WaitForSeconds (.1f);
Debug.Log (name.ToString ());
}
在ButtonClicked函数上,它只返回一个值,但是当onDownloadClick函数时,显示当前值和所有前一个值。什么似乎是问题?谢谢!
答案 0 :(得分:0)
Button.onClick
是一个ButtonClickedEvent
,它将保存“侦听器”,然后在被告知时(即,单击拥有UnityEngine.UI.Button
时)调用它们。如果您从未取消订阅,“听众”列表将会累积;您只是通过AddListener
添加到列表中:
downloadButton.onClick.AddListener (() => StartCoroutine (onDownloadClick (name2.ToString ())));
尝试清除ButtonClickedEvent
对象,然后再添加新的侦听器:
downloadButton.onClick.RemoveAllListeners();
downloadButton.onClick.AddListener (() => StartCoroutine (onDownloadClick (name2.ToString ())));