前言
MySQL是一個線上資料庫,本篇文章的目的是要將Unity透過MySQL讀取線上資料庫,發行商是Oracle。
XAMPP: 伺服器懶人包,本篇用到他架設MySQL的功能(XAMPP還有其他很多功能可以用web、php…..等),順帶一提他的管理介面是在網頁上執行(就需要用到php)。
mysql-connector-odbc: mySQL的驅動程式(裝完可以到oobc管理員看有沒有裝好)
Unity連接數據庫有幾種方法:第一種直連數據庫,這種方法發布的遊戲都不會這麼做,因為你的數據庫賬號密碼都寫在代碼裡了,只要懂的人反編譯就可以知道你數據庫裡的東西,一般都用第二種方法,這個方法就是調用伺服器(如webserver ),在伺服器上寫數據庫的代碼,讓Unity與伺服器交互資料。因為第二種方法筆者還沒有深入研究,所以下面就先說明直連數據庫的方法,畢竟在客戶沒有給你伺服器情況下你只能做直連,給客戶看效果。
大綱
1.設置環境
2.建立MySQL資料庫
3.Unity連接MySQL
4.將Excel匯入MySQL
一、首先要設置環境,就是裝一些有的沒的
要裝這些:
mysql-connector-odbc可以到mysql官網下載,有分32或64位元,如果不知道自己電腦是什麼位元就都裝起來吧。xampp-windows-x64也可以到xampp官網載,可以把它看成一個伺服器,以下開始安裝。
mysql-connector-odbc:
裝他很簡單,點下執行後,一直按下一步到底就好,裝完之後可以到 控制台>>統管理工具>>ODBC 資料來源 (有32跟64位元可以看)>>驅動程式
查看他有沒有裝好,順帶一提SQL Server是微軟自家的資料庫,他是在微軟在一開始就安裝好的。
xampp-windows-x64:
執行之後他會跳出一個警告視窗內容主要是說「請把我裝在根目錄底下喔,也就是C或是D槽下」,因為可能會有權限的問題所以才會這樣要求,另外路徑下也不要有中文,因為他似乎不支援多國語系。
我的目錄是下面這樣,當然放D槽也可以。
裝好之後到安裝xampp的資料夾執行setup_xampp,他會跳出一個cmd視窗等他跑完會出現finish(重複執行或電腦已經裝好了他會跑出一個Sorry),然後執行xampp-control就會跳出xampp的操作視窗了!
接下來先按下Apache的Start,然後再按下MySQL的Start
按下Start之後旁邊的Admin會亮起來,把MySQL的Admin按下去,就會出現MySQL的WEB 介面管理程式phpMyAdmin。
現在電腦的環境都設置好了,接下來開始建立MySQL資料庫吧
二、建立MySQL資料庫
接下來的操作都是在phpMyAdmin當中,有人可能會想說為什麼他明明是MySQL的資料庫管理工具名稱裡怎麼會有一個php呢?因為他是以php為基礎架構在網站主機上的資料庫。
第一步先建立一個資料庫,點擊資料庫活頁,然後命名資料庫,這邊要注意最好使用英文名稱,因為之前筆者Unity一直連不上MySQL結果發現是資料庫中文名稱的問題(資料庫的欄位內容還是可以用中文的),接下來選編譯碼這邊習慣是用utf8-unicode_ci,以上步驟都完成就按下建立。
建立完成後他會要你建立資料表,這邊筆者名稱取的跟資料庫一樣,想要取不同名稱也可以,接下來選擇資料表需要的欄位,然後按右下角的執行。
再來要填欄位,主要需要填的有3項:名稱、類型、長度,其中類型可以選用int(整數)、float(浮點數)、日期、char(字串)、空間類型,填寫完成按右下的執行。
這樣就可以在資料表裡看到剛剛建立的欄位。
接著要幫欄位填寫上數值,先選擇SQL活頁會出現下面的畫面,然後就需要利用到SQL的語法了,但不用擔心主要用到的也就幾個,而且管理工具很貼心的幫我們把常用語法的按鈕都列在下面了,我們只需要按下按紐就會跳出對應的格式讓你填,但如果有比較特殊的需求還是需要查一下語法。
Select:把想要看到的欄位篩選出來,比較特殊的是*
,是指整個資料表全列的意思。
Insert:新增欄位。
Update:更新已經有的欄位。
Delete:刪除已有的欄位。
下面我先新增兩個ID為0與1的欄位。
新增完之後可以再回到SQL活頁輸入SELECT * FROM `XXXX`
查詢現在資料表的所有欄位。
這樣建立MySQL資料庫就暫時告一段落了!接著就要利用Unity控制MySQL。
三、Unity連接MySQL
關於Unity連接MySQL的方式我是參考TMHK Studio網站的代碼,有時間可以點進去捧場一下。
在使用Unity連MySQL之前要先加入幾個plugin到Unity當中:
I18N:國際化多語言的插件,其來源是英文單詞internationalization的首末字符i和n之間的字符數為18。開發人員為 Novell Inc ,可以到他們的官網下載。
I18N.West:是配合I18N使用的插件,West是西方語系的意思,另外還有I18N.CJK.dll(中日韓。開發人員為 Novell Inc ,可以到他們的官網下載。
Mysql.Data:是C#操作MySQL的驅動文件,使C#語言更簡潔的操作MySQL數據庫。這可以在之前裝mysql-connector的資料夾找到(C:\Program Files (x86)\MySQL\Connector NET 8.0\Assemblies\v4.5.2)。
System.Data:主要是跟數據庫操作有關。可以到(%Unity根目录%\Editor\Data\Mono\lib\mono\2.0)下載。
System.Drawing:主要是跟數據庫操作有關。一樣可以到(%Unity根目录%\Editor\Data\Mono\lib\mono\2.0)下載。
第一部分的程式碼為SqlAccess,需要更改的地方為HOST、ID、PWD、DATABASE、PORT等個人化的資料就可以了。
*Host:如果是連內網IP輸入localhost或127.0.0.1就行了,如果要讓別處的裝置連到自己電腦的MySQL資料庫,就需要先用CMD開啟MySQL遠端連線的權限(教學),然後輸入自己的IP。(C:\xampp\mysql\bin)
*ID:如果沒有更改過預設為”root”。
*PWD:沒有設定過的話就空白即可。
*DATABASE:輸入資料庫的名稱,這邊要注意如果輸入有中文可能會造成錯誤。
*PORT:就是xxamp上MySQL的PORT
基本上連線到MySQL常會使用的指令會有:
1.Unity連線到MySQL
2.創建資料表
3.加入、選擇、更新、刪除欄位
4.關閉Unity與MySQL的連線
1.Unity連線到MySQL
這會需要用到MySql.Data.MySqlClient插件裡的MySqlConnection,new實例化一個之後再使用Open指令開啟連線。
2.創建資料表
3.加入、選擇、更新、刪除欄位
4.關閉Unity與MySQL的連線
以上功能都可以利用MySql.Data.MySqlClient的MySqlDataAdapter輸入MySQL相對應的語法進行操作。
以上除了第一點,都可以在MySQL的PhpmyAdmin上操作功能不一定要在Unity的環境執行。
四、將Excel匯入MySQL
通常企劃都會以Excel的格式給出一些設定參數,畢竟企劃不是程式沒辦法要求去寫一行一行的程式碼,這時候就需要用到PhpmyAdmin可以讀取csv的功能了,企劃只需要將Excel轉換成csv的格式就能給程式讀取資料。
首先用Excel輸入一些資料:
轉存成csv。
然後檢查一下是不是UTF8的格式,不是的話請存成UTF8再給PhpmyAdmin讀取,這樣中文才不會產生亂碼。
到這邊Excel的部分就完成了,接下來要到PhpmyAdmin設定資料庫的欄位。
依照Excel的欄位開出相同數量的欄位數,這邊筆者的欄位數設定為3。
編碼記得要選UTF8得類型。
接著選擇”匯入”的標籤頁。
選擇要匯入的CSV檔,並把編碼設定成UTF8。
這裡是詢問要從第幾行開始讀取,假如CSV的第一行不是要讀取的欄位,那就把參數設定為1,讀取時就會自動忽略。
接著要設定要讀取的格式,要注意有分成「CSV」與「CSV using load data」兩種,要選「CSV using load data」才能順利讀取,意思是「以檔案取代資料表資料」。
另外,欄位分隔符號「,」,內容分隔符號「”」,內容跳脫符號「”」修改成這樣後在按下執行。
(如果在讀取CSV錯誤有可能是因為CSV的BOM格式問題,可以利用應用程式Notepad ++有個編碼轉換能:格式 →轉換至UTF-8碼格式〈檔首無BOM〉,或參考這篇文章但他是從PhpmyAdmin匯出http://dotnetmis91.blogspot.com/2010/05/phpmyadmin-utf-8-csv.html)
到資料庫檢查一下資料有沒有出現,這樣就完成了!
參考:
這邊分享將CSV匯入MySQL的PhpmyAdmin的方法:
https://xyz.cinc.biz/2007/10/excelmysql.html
BOM:
http://dotnetmis91.blogspot.com/2010/05/phpmyadmin-utf-8-csv.html