UniDDataBase-介紹及主要用法總結,uniddatabase-用法

來源:互聯網
上載者:User

UniDDataBase-介紹及主要用法總結,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 txtPath, int columnNumber) {//columnNumber 表示資料表有幾欄欄位
        using (StreamReader read = new StreamReader(txtPath, Encoding.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>建立資料表時表名中最好不要夾雜數字,具體原因。。。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.