Sqlite C# 代码在 Unity 编辑器中工作,但在编译后停止工作
Sqlite C# code works in Unity Editor, but stops working after compiling
我 运行 遇到了这个问题,我的游戏在 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 编辑器测试游戏时,数据被完美保存。在我编译它的那一刻,它就不会继续游戏。没有错误,什么都没有。我什至可以运行左右。但是游戏卡住了。
老实说,我不知道如何解决这个问题。自 2 周以来一直在谷歌上搜索以使 sqlite 在 Unity 中工作,试图避免错误,调试所有内容,直到我找到问题的根源并且一无所知......我希望有人能提供帮助。
非常感谢!
干杯,
彼得
您的目标平台是什么? Android, IOS, ...?
请注意,对于不同的平台,unity3d 使用不同的 sqlite 程序集。
尝试检查以下项目
https://github.com/codecoding/SQLite4Unity3d 并将 Plugins 文件夹中的数据与您项目中使用的数据进行比较。
我建议尝试使用专为 Unity 设计的库。就个人而言,这就是我一直在做的处理多平台 SQLite 处理的事情。我强烈推荐这个 library/wrapper
SQLite 简化了 Unity3d http://codecoding.github.io/SQLite4Unity3d
我目前正在对此进行改进,使其更易于使用。然而,这可能是一个很好的起点!
祝你好运!
我 运行 遇到了这个问题,我的游戏在 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 编辑器测试游戏时,数据被完美保存。在我编译它的那一刻,它就不会继续游戏。没有错误,什么都没有。我什至可以运行左右。但是游戏卡住了。
老实说,我不知道如何解决这个问题。自 2 周以来一直在谷歌上搜索以使 sqlite 在 Unity 中工作,试图避免错误,调试所有内容,直到我找到问题的根源并且一无所知......我希望有人能提供帮助。
非常感谢!
干杯, 彼得
您的目标平台是什么? Android, IOS, ...?
请注意,对于不同的平台,unity3d 使用不同的 sqlite 程序集。
尝试检查以下项目 https://github.com/codecoding/SQLite4Unity3d 并将 Plugins 文件夹中的数据与您项目中使用的数据进行比较。
我建议尝试使用专为 Unity 设计的库。就个人而言,这就是我一直在做的处理多平台 SQLite 处理的事情。我强烈推荐这个 library/wrapper
SQLite 简化了 Unity3d http://codecoding.github.io/SQLite4Unity3d
我目前正在对此进行改进,使其更易于使用。然而,这可能是一个很好的起点!
祝你好运!