UniDDataBase-介紹及主要用法總結

UniDDatabase可以處理的數據類型:INT,TEXT,FLOAT,DATE,TIME,Prefab,Texture2D,Audio,Position,Rotation,ScriptFile等。文件夾結構:UniDDataBase的文件夾結構幫助開發者管理文件。所有你想讓UniDDatabase幫你管理的內容你都需要放到正確地文件夾中。音頻剪輯放在audio_uni 文件夾。UniDDatabase文件自動放在DDatabase_uni文件夾。Prefabs在prefab_uni文件夾。圖片放在Texture_2D_uni文件夾。支持unity3d引擎的獨立版和專業版的用戶.100%的兼容unity引擎,使用一行代碼訪問一行中的任何數據.他訪問數據的速度是1000行的查詢只需要0.193ms.

UnidDDataBase是用來完成本地數據存儲讀取的數據庫Unity插件,它通過txt文件保存數據,或者更確切的說是將數據表以自己獨特的字符串格式保存到txt文件中。作爲數據庫最基本的操作:增、刪、改、查。已經知道,這個插件使我們可以手動創建數據表,填寫數據,更改數據,增加記錄,刪除記錄。那麼下面介紹如何用代碼動態的對數據表操作。

其實這些方法UniDDataBase已經幫我們封裝好了我們只需要調用,這些方法在UniDDataBaseCs.cs文件中都是類方法。

調用方法時首先在腳本中要聲明public TextAsset 字段名,一定將要操作的txt文件拖入,不能通過Resources.Load()加載。

1.增加記錄:

public static void AddNewRecord(TextAsset ddatabase)

Description:它會爲數據表中添加一行記錄,並賦上默認值。

2.刪除記錄:

public static void DeleteRecord(TextAsset ddatabase,int recordNumber)

Description:刪除第recordNumber行記錄。

注意:若全部刪除數據表中的數據時需要從後往前刪,反之,就會發現某些行未被刪除,因爲數據表每刪掉一行要將剩餘的行往前移動一次。

3.更新數據:

提供了更新數據表一個單元格數據的函數了,但沒看到能提供一下子可以更新數據表一行記錄的函數。當然這已經足夠了。

public static bool UpdateCell(TextAsset ddatabase,string tKeyCellData,int userInputInt)

Description:這是一個更新一個int型單元格的方法,當然對應的其他類型的還有很多。

遇到錯誤:Programmer Error!!!This cell Does not support INT, itsupports: NULL;

說明你更新的單元格根本不存在,看行號和列號是否過界。

4.查詢數據:

只提供了查詢某個單元格數據的函數。對於每個類型都有單獨對應的函數,下面是int型的方法:

public static int GetIntWhereColumnRowEquals(TextAsset ddatabase,int columnNumber,int rowNumber)

Description:獲得第rowNumber行第columnNumber列的單元格的值。

public static String[] GetArrayOfDdKeyInColumn(TextAsset ddatabase,string columnName)

Description:獲得名字爲columnName的列所有值。

5.其他函數介紹:

public static string GetColumnName(TextAsset ddatabase,int rowNumber)

Description:通過列號獲得列名。rowNumber應爲colmunNumber.在其他類中也有行號和列號參數不對應的情況,到時候自己試一試。

public static String[] GetArrayOfDdKeyInColumn(TextAsset ddatabase,string columnName)

Description:獲得數據庫文件中某列對應的所有DdKey,即txt數據文件中每一行中的鍵

public static String[] GetArrayOfTextInColumnByPattern(TextAsset ddatabase,string columnName,Enum typeOfOperation,string stringPattern)

Description:通過某種方式獲得某列中的一些值,其中typeOfOperation這個枚舉一定要像插件中例子中的那個枚舉聲明的那樣,不能改變,因爲我看實現代碼中用到了枚舉值對應的字符串來做判斷,所以這個枚舉的聲明一定得是這樣:

    [System.Serializable]
    public enum OperationType
    {
        All,
        Equals,
        Contains,
        Greater,
        GreaterThanOrEqual,
        LessThan,
        LessThanOrEqual,
        Between        
    }

public static int GetTotalColumns(TextAsset ddatabase)

Description:獲得數據表總列數

public static int GetTotalRows(TextAsset ddatabase)

Description:獲得數據表總行數

我自己也實現了一下這個函數:

using System.text;

using System.IO;

private int GetTotalRows (string txtPathint columnNumber) {//columnNumber 表示數據表有幾列字段
        using (StreamReader read = new StreamReader(txtPathEncoding.Default))
        {
            return (read.ReadToEnd().Split('\n').Length-4)/(2*columnNumber) - 1;//kai tou 3 and jiewei 1;
        }
}

Tips:

1>在txt文件中你會發現類似"EnemyContentTEXT0Default.txt[@*_*@]EnemyContentTEXTTable[@-_*@]ColumnNumber=0[@*_-@]RowNumber=2[@_@]INT"的字符串,這是一條記錄值類型的鍵值對,"INT"前面都是UniDDataBase自己在解讀該txt文件時的鍵,"INT"是值,其他行類似。這條格式特殊的字符串是通過PseudoLinqDatabase_unity類中的public static string GetCellDataKeyStatic(string currentDatabaseName,string currentTableName,int rowNumber,int columnNumber)返回的。當然該類是Editor文件夾中類我們無法調用,我提醒的是我們可以重命名爲自己的類來調用哦,當然其中涉及到Editor類的東西都要刪掉。

2>創建數據表時表名中最好不要夾雜數字,具體原因。。。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章