頭のスクラッチャーのほんの一部です: sqliteで新しいアプリケーションを構築し、すべてのデータベース関数を扱うシングルトンを設定します。情報が入力されると、データベースから追加されたリストが使用されるため、テキストフィールドのプレハブを画面に取り込むことができます。これを行うより良い方法がある場合は、私に知らせてください。別の関数からリストを返すのは正しいですが、内容はnullです。Unity3d
From the main script:
public void GetOilChangeInfo()
{
DatabaseManager.Instance.SQLiteInit();
OilChangeList.Clear(); Clear the list
OilChangeList = DatabaseManager.Instance.GetOilChangeList(); Make the list from the database
Debug.Log("How many?" + OilChangeList.Count); //This is correct, I have four entries
for(int i=0; i<OilChangeList.Count; i++)
{
Debug.Log(OilChangeList[i]); //Shows up as 4 nulls
}
}
On the Manager Class:
public List<OilChange> GetOilChangeList()
{
Debug.Log("Function Calls!");
mConnection.Open();
mSQLString = "SELECT * FROM " + SQL_TABLE_OIL_CHANGES;
mCommand.CommandText = mSQLString;
mCommand.ExecuteNonQuery();
mReader = mCommand.ExecuteReader();
while (mReader.Read())
{
OilChangeList.Add(newOilChange(mReader.GetString(0),
mReader.GetString(1),
mReader.GetString(2),
mReader.GetString(3),
mReader.GetString(4),
mReader.GetString(5),
mReader.GetString(6),
mReader.GetString(7),
mReader.GetString(8)));
//Debug.Log(mReader.GetString(0) + mReader.GetString(1) + mReader.GetString(2) + mReader.GetString(3) + mReader.GetString(4) + mReader.GetString(5) + mReader.GetString(6) + mReader.GetString(7) + mReader.GetString(8));
}
mReader.Close();
mConnection.Close();
return OilChangeList;
}
これは、あなたが「新しい」キーワードを使用してMonoBehaviourを作成しようとしている問題
の源であってもよい奇妙なエラーを与えます。これは許可されていません。
私は両方のスクリプトを1つのオブジェクトから継承しています。 この警告は、各入力後に表示されます。誰でもこれを手助けすることができますか? ありがとう!
エラーはどこから来ますか?あなたのコードに**新しい**は表示されません。 –
あなたは 'newOilChange()'メソッドの内容を含めていません。そうしてください。 – Serlite
そしてそのエラーの意味を教えてください。** new **キーワードを使って 'MonoBehaviour'から派生したクラスの新しいインスタンスを作成することはできません。参照を取得したり、新しいインスタンスを作成したり、それぞれのクラスが 'MonoBehaviour'から派生してはならない(例えば、クラスが基本関数を使用する必要がない場合や、シーン内のゲームオブジェクト上に直接存在していてもよい)。 –