げんとめブログ

Unity内でMySQLを使う

上のサイトを参考にUnityでMySQLを直接使ってみました。英文なのでGoogle翻訳フル活用。英語読めるようになりたい。

まとめると、

C#用のMySQLドライバを、Unityにインポートすることの解説です。

最終的に成功したけど、よくわかんなかった……。

PHPとか使ってデータベースにアクセスする記事はあったけど、Unity内で直接使うのはあまり見なかったので書いてみます。

前提として、

  1. MySQLのデータベース自体は作成済み。
  2. C#のランタイムバージョンを4.xに。
  3. MySQLのDLL自体の詳細は公式のドキュメントとかで別途調べる。

ダウンロードと解凍

このサイトからDLLをダウンロードします。

Select Operating Systemを.NET&MONOにします。で、ダウンロード開始。

手ごろな場所に解凍して、UnityのPluginsフォルダにドロップします。

複数のDLLファイルがありますが、これ以外はエラーが出て読み込めませんでした。

データベースを使うだけなら、MySQL.data.dllだけあれば使えるので良しとすることに。

もしMySQL.dataも使えなかったら古いバージョンのMySQLドライバをダウンロードしてみる。

で、MySQL.data.dllをインポートすると

The type `System.Data.Common.DbConnection' has been forwarded to an assembly that is not referenced. Consider adding a reference to assembly `System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'

みたいなエラーが出る。

これを解決するために、

自分のPCの、<Unityをダウンロードしたフォルダ>\Unity\Hub\Editor\2018.2.13f1\Editor\Data\MonoBleedingEdge\lib\mono\unityjit

からSystem.Data.DllをPluginsフォルダに入れる。

こうすればとにかく使えました。

このSystem.Data.DLLがいろんなフォルダにあるんですが、unityjitフォルダ以下のやつじゃないとエラーになった……。

最終的にこんな感じのフォルダ構成になりました。

あとEditProjectSettingsPlayerOtherSettingsから

ScriptingRuntimeVersionを4.xにしておく。

試しに使ってみる。

using System.Collections;
using System;
using System.Collections.Generic;
using UnityEngine;
using MySql.Data.MySqlClient;
public class NewBehaviourScript : MonoBehaviour {
    private void Start()
    {
        MySqlConnection con = new MySqlConnection("server=localhost;uid=root;pwd=mypass;database=tekito");
        
        try
        {
            con.Open();
            string sql = "Select * from tableName";
            MySqlCommand com = new MySqlCommand(sql, con);
            MySqlDataReader reader = com.ExecuteReader();
            while (reader.Read())
            {
                Debug.Log(reader[0]);
            }
            reader.Close();
        }catch(MySqlException e)
        {
            Debug.Log(e.ToString());
        }
        
        Debug.Log("");
    }
}

これでPHPとかを使わずにUnity内でMySQLを使えるようになりました。

しかし、.NETのバージョンも対応してると思うんだけど、どうしてMysql.data.entity.dllとかは使えないんだろう?

Exit mobile version