コルーチンを使用してUnityのSQLiteデータベースにアクセスする

AzzyDude

SQLiteDBからの結果が入力されるメニューをUnityで作成しました。ただし、メニューを作成すると、DBにクエリを実行している間、ゲーム全体が一時的にフリーズします。

これを修正するために、メニューの作成とデータの入力を分離しようとしています(つまり、クエリが完了するまでメニューに「読み込み中」と表示されます)。

私はこれを行うためにyield-returnコルーチンを使用しようとしていますが、ゲームはまだフリーズしています。以下に、私が行っていることを示すいくつかの擬似コードがあります...

void createMenu () {

    // code to create menu... 

    StartCoroutine(getData());

}

IEnumerator getData () {

    List<string> sqlResults = Database.query("SELECT * FROM table");

    yield return null;

    updateMenu();

}

void updateMenu() {

   // replaces "loading" strings with sql data results 

}

私はこれを間違った方法で行っていますか、それともコルーチンを間違って使用していますか?

プログラマー

データベース操作がメインスレッドをブロックしているようです。ThreadPool.QueueUserWorkItem関数を使用して新しいスレッドで実行します。完了したらUnityThread.executeInUpdateこの投稿の関数を使用して関数を呼び出しupdateMenu()ます。このソリューションを使用するにはUnityThreadこの投稿からクラスを取得する必要があります。

void Awake()
{
    UnityThread.initUnityThread();
}

void runQuery(string query)
{
    ThreadPool.QueueUserWorkItem(RunInNewThread, query);
}

private void RunInNewThread(object a)
{
    string query = (string)a;
    List<string> sqlResults = Database.query(query);


    //We are in another Thread. Use executeInUpdate to run in Unity main Thread
    UnityThread.executeInUpdate(() =>
    {
        updateMenu();
    });
}

使用法

runQuery("SELECT * FROM table");

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

JDBCを使用して任意のコンピューターからローカルホストデータベースにアクセスする

分類Dev

ローカルコンピューターでPythonスクリプトを使用してリモートサーバー(ubuntu)のsqliteデータベースファイルにアクセスする方法

分類Dev

コンストラクターを使用してコントローラーのデータベース接続にアクセスする方法

分類Dev

MySQLWorkbenchを使用してLightsailインスタンスのデータベースにアクセスする

分類Dev

sqliteを使用してデータベースからデータにアクセスする方法

分類Dev

静的アドレス (Electron / Nodejs / fs) を使用してリモート マシン上の sqlite データベースにアクセスする

分類Dev

Linuxターミナルを使用してWindows上のSQLデータベースにアクセスする

分類Dev

UICollectionのセクションを使用してデータベースにアクセスする

分類Dev

Javaのブループリントで定義されたデータソースを使用してOracleデータベースにアクセスする

分類Dev

PHPを使用してクライアントのSQLデータベースにアクセスする

分類Dev

同時ゴルーチンがデータベースにアクセスしようとしたときにSQLiteファイル/データベースロックを回避するための予防策?

分類Dev

SQLiteデータベースを使用してアダプタonBindViewHolderitemViewコンテキストをクラスコンテキストに変換する

分類Dev

SQLite:データベースを設計し、AUTOINCREMENT IDを使用してそのデータにアクセスする正しい方法は?

分類Dev

データベース文字列を使用してファイルにアクセスする際の問題

分類Dev

KubernetesクラスターのpgAdminを使用してデータベースにアクセスする

分類Dev

SQLiteを使用したDjangoデータベースアクセスAPIの設定に関する問題

分類Dev

このphpコードを使用してwampデータベースからmysqlテーブルにアクセスする方法は?

分類Dev

別のアプリデータベースにアクセスしてレコードを挿入する方法

分類Dev

チェックボックスの値を使用してphpを使用してデータベースにアクセスする方法は?

分類Dev

Laravelモデルを使用してデータベースビューにアクセスする方法は?

分類Dev

攻撃者がiOSアプリを逆コンパイルしてデータベースにアクセスするのを防ぎます

分類Dev

zeepを使用してデータベースにアクセスする

分類Dev

javascriptを使用してJSONデータベースにアクセスする方法

分類Dev

Clojureを使用してデータベースにアクセスする

分類Dev

ファクトリパターンを使用してFlaskの@Appデコレータにアクセスする

分類Dev

ルーターを使用して、あるコンポーネントから別のReactJSに渡されたデータにアクセスする方法

分類Dev

Access を使用してサード パーティのデータベースにアクセスする方法

分類Dev

ScalaSlickを使用してデータベースエントリに連続してアクセスする方法

分類Dev

WordPressのwpdbクラスを使用して外部データベースにアクセスする

Related 関連記事

  1. 1

    JDBCを使用して任意のコンピューターからローカルホストデータベースにアクセスする

  2. 2

    ローカルコンピューターでPythonスクリプトを使用してリモートサーバー(ubuntu)のsqliteデータベースファイルにアクセスする方法

  3. 3

    コンストラクターを使用してコントローラーのデータベース接続にアクセスする方法

  4. 4

    MySQLWorkbenchを使用してLightsailインスタンスのデータベースにアクセスする

  5. 5

    sqliteを使用してデータベースからデータにアクセスする方法

  6. 6

    静的アドレス (Electron / Nodejs / fs) を使用してリモート マシン上の sqlite データベースにアクセスする

  7. 7

    Linuxターミナルを使用してWindows上のSQLデータベースにアクセスする

  8. 8

    UICollectionのセクションを使用してデータベースにアクセスする

  9. 9

    Javaのブループリントで定義されたデータソースを使用してOracleデータベースにアクセスする

  10. 10

    PHPを使用してクライアントのSQLデータベースにアクセスする

  11. 11

    同時ゴルーチンがデータベースにアクセスしようとしたときにSQLiteファイル/データベースロックを回避するための予防策?

  12. 12

    SQLiteデータベースを使用してアダプタonBindViewHolderitemViewコンテキストをクラスコンテキストに変換する

  13. 13

    SQLite:データベースを設計し、AUTOINCREMENT IDを使用してそのデータにアクセスする正しい方法は?

  14. 14

    データベース文字列を使用してファイルにアクセスする際の問題

  15. 15

    KubernetesクラスターのpgAdminを使用してデータベースにアクセスする

  16. 16

    SQLiteを使用したDjangoデータベースアクセスAPIの設定に関する問題

  17. 17

    このphpコードを使用してwampデータベースからmysqlテーブルにアクセスする方法は?

  18. 18

    別のアプリデータベースにアクセスしてレコードを挿入する方法

  19. 19

    チェックボックスの値を使用してphpを使用してデータベースにアクセスする方法は?

  20. 20

    Laravelモデルを使用してデータベースビューにアクセスする方法は?

  21. 21

    攻撃者がiOSアプリを逆コンパイルしてデータベースにアクセスするのを防ぎます

  22. 22

    zeepを使用してデータベースにアクセスする

  23. 23

    javascriptを使用してJSONデータベースにアクセスする方法

  24. 24

    Clojureを使用してデータベースにアクセスする

  25. 25

    ファクトリパターンを使用してFlaskの@Appデコレータにアクセスする

  26. 26

    ルーターを使用して、あるコンポーネントから別のReactJSに渡されたデータにアクセスする方法

  27. 27

    Access を使用してサード パーティのデータベースにアクセスする方法

  28. 28

    ScalaSlickを使用してデータベースエントリに連続してアクセスする方法

  29. 29

    WordPressのwpdbクラスを使用して外部データベースにアクセスする

ホットタグ

アーカイブ