1

Unity 3d IDE でゲームが正常に動作するという問題に遭遇しましたが、コンパイルした瞬間に特定の瞬間に停止します。実際、私のsqliteコードが実行されたとき。しかし、初期化時だけではありません!

したがって、このコードは問題なく実行されます。

/// <summary>
/// Basic initialization of SQLite This will be activated by the manager script 
/// </summary>
public static void SQLiteInit ()
{
    string SQL_DB_LOCATION = @"URI=file:C:\temp\inlusio_data\InlusioDB.sqlite";
    mConnection = new SqliteConnection(SQL_DB_LOCATION);
    mCommand = mConnection.CreateCommand();
    mConnection.Open();
    ExecuteQuerry("PRAGMA page_size = " + "4096" + ";");
    ExecuteQuerry("PRAGMA synchronous = " + "1" + ";");
    mConnection.Close();
}

私のコードの上記の部分が機能したため、ExecudeQuerry コードは正常に機能しているようです。ExecudeQuerry コードは次のとおりです。

    public static void ExecuteQuerry (string sqlcomand)
{
    Debug.Log(sqlcomand);
    mCommand.CommandText = sqlcomand;
    mCommand.ExecuteNonQuery();
}

ゲームが動かなくなる問題のある部分:

public static void InitialSavingsToDB (string chiffre, string EasyDelay, string HardDealy, string session)
{
/// Subject code 
ExecuteQuerry("INSERT INTO 'Subject'('Subject_Number','EasyDifficultyLevel','HardDifficultyLevel') VALUES ('" + chiffre + "','" + EasyDelay + "','" + HardDealy + "');");
}

私もこのように試しました:

public static void InitialSavingsToDB (string chiffre, string EasyDelay, string HardDealy, string session)

{
    /// Subject code 
    mConnection.Open();
    mCommand.CommandText = "INSERT INTO 'Subject'('Subject_Number','EasyDifficultyLevel','HardDifficultyLevel') VALUES ('" + chiffre + "','" + EasyDelay + "','" + HardDealy + "');";
    mCommand.ExecuteNonQuery();


    mConnection.Close();      

}

言及する価値があるかもしれませんが、次のように宣言されている ManagerScript から InitialSavingsToDB 関数を呼び出します。

public class ManagerScript : MonoBehaviour {
...
...
...
private void Start ()
    {
        ...
        testofsql.SQLiteInit(); // initialisation of the Data Base
        ...
...
...

    }

...
...
}

したがって、私のコードは正常に動作し、Unity 3d エディターからゲームをテストすると、データは完全に保存されます。コンパイルした瞬間、ゲーム内で続行しません。エラーはありません。走り回ることもできます。しかし、ゲームは行き詰まっています。

正直なところ、これを解決する方法がわかりませんでした。Unityでsqliteを動作させるために2週間グーグルで検索し、エラーを回避しようとし、問題の原因を見つけて無知になるまですべてをデバッグしました...誰かが助けてくれることを願っています.

どうもありがとうございました!

乾杯、ペトル

4

2 に答える 2

0

ターゲット プラットフォームは何ですか? アンドロイド、IOS、...?

異なるプラットフォームでは、unity3d は異なる sqlite アセンブリを使用することに注意してください。

次のプロジェクト https://github.com/codecoding/SQLite4Unity3dを確認し、Plugins フォルダー内のデータをプロジェクトで使用されているものと比較してみてください。

于 2015-02-11T21:34:51.163 に答える
-1

Unity 用に設計されたライブラリを使用することをお勧めします。個人的には、これはマルチプラットフォームの SQLite 処理を処理するために私が行ってきたことです。このライブラリ/ラッパーを強くお勧めします

Unity3d で SQLite を簡単に作成http://codecoding.github.io/SQLite4Unity3d

私は現在、それを改善し、さらに使いやすくする作業を行っています。ただし、これはおそらく良い出発点です。

幸運を!

于 2016-03-07T12:40:01.727 に答える