上のサイトを参考にUnityでMySQLを直接使ってみました。英文なのでGoogle翻訳フル活用。英語読めるようになりたい。
まとめると、
C#用のMySQLドライバを、Unityにインポートすることの解説です。
最終的に成功したけど、よくわかんなかった……。
PHPとか使ってデータベースにアクセスする記事はあったけど、Unity内で直接使うのはあまり見なかったので書いてみます。
前提として、
- MySQLのデータベース自体は作成済み。
- C#のランタイムバージョンを4.xに。
- 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フォルダ以下のやつじゃないとエラーになった……。
あとEdit➡ProjectSettings➡Player➡OtherSettingsから
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とかは使えないんだろう?
コメント
こんにちは。
unityで MySQLのDBに接続しようとしていて、ここにたどりつきました。
書かれているコード、とても参考になりました!!
が、
「Exception」の箇所は
「MySqlException」が正解ではないでしょうか?
この箇所でコンパイルエラーがでたので、いろいろ検索していたら、
C#からMySQLに接続する
https://dianxnao.com/c%E3%81%8B%E3%82%89mysql%E3%81%AB%E6%8E%A5%E7%B6%9A%E3%81%99%E3%82%8B/
このサイトの記述で解決しました。
ご指摘ありがとうございます。
訂正しておきました。
自分の環境でもコンパイル時にエラーが出てたのかもしれませんが、そのまま記事にしてしまったのかもしれません。
惑わせてしまって申し訳ないです。