Unityでレジシステムのシミュレータを作っています。
Canvas内UIにボタンをたくさん配置して、それぞれのボタンにはスクリプトPriceButtonをアタッチしています。
public string _Syouhinmei;(商品の名前 みかんやりんごなど)
public int _Price;(単価 150や120など)
public int _Count;(このボタンが押された回数)
public int _Total;(商品ごとの合計金額)
の変数を使用し、インスペクターから商品名と金額を設定しています。
public int _Remove;//この変数は会計クリアされた時に押されたボタンのカウント数をListから消す予定のもの
またScene内にRegiTextManagerという精算額・預かり金・釣り銭を管理するオブジェクトがあります。
そのオブジェクトに同名のスクリプトをアタッチして
public static List<int> _SelectedButtonTotal = new List<int>();//int型でボタンを保存
というようにRegiTextManager内で宣言しています。
ボタンがそれぞれ最初に押された時にListの_SelectedButtonTotalに格納したいと考えています。
発生している問題
ソースコードのPriceButtonのスクリプトでボタンを何種類押してもDebug.Logでは”配列の中の1番目にあります”と表示されてしまいます。
希望としては、最初みかんボタン押されたら”配列の中の1番目にあります”で
次にりんごボタン押したら”配列の中の2番目にあります”というようにして
再度みかんボタン押したら”配列の1番目のカウント数は2個です”
という結果が理想なのです。
エラーメッセージ
該当のソースコード
C#
1ソースコード
//配列に入れる
if (_Remove == 0)
{
RegiTextManager._SelectedButtonTotal.Add(_Count);
_Remove = RegiTextManager._SelectedButtonTotal.IndexOf(_Count); _Remove++; Debug.Log("配列の中の" + _Remove + "番目にあります"); Debug.Log("現在のIndexの数は" + RegiTextManager._SelectedButtonTotal.Count);//これは正しく表示された } else if(_Remove > 0) { Debug.Log("配列の" + _Remove + "番目のカウント数は" + _Count + "個です。" ); }
試したこと
_Remove = RegiTextManager._SelectedButtonTotal.IndexOf(_Count);この行のIndexOfをFindIndexにしたら
「引数1:は’int’から'System.Predicate<int>'へ変換することはできません」というエラーでした
IndexOfは文字列を入れられるとネットに書いてありましたが、int型のIndex番号はどのようにして検索したら良いのでしょうか?
どなたかご教授お願いいたします。
回答2件
あなたの回答
tips
プレビュー