前言:學(xué)習(xí)數(shù)據(jù)開(kāi)始~
1.PlayerPrefs類(lèi)(是數(shù)據(jù)持久化的類(lèi)茁彭,像游戲中的存檔啊什么的)
(1)是個(gè)靜態(tài)類(lèi)导披,所以可以類(lèi)名.調(diào)用此類(lèi)里面的方法
(2)修改數(shù)據(jù):類(lèi)名.SetXXX(鍵舵鳞,值)
<1>XXX可以是Int、Float狡孔、String三個(gè)類(lèi)型中的任意一個(gè)
<2>鍵懂诗,是一個(gè)字符串類(lèi)型的值
<3>值,是一個(gè)與XXX類(lèi)型對(duì)應(yīng)的值苗膝,我們修改這個(gè)值殃恒,這個(gè)值與鍵是對(duì)應(yīng)的
(3)讀取數(shù)據(jù):類(lèi)名.GetXXX(鍵,值)
<1>鍵辱揭,是一個(gè)字符串類(lèi)型的值离唐,相當(dāng)于我們查找的時(shí)候用的索引,我們?cè)贕et的時(shí)候问窃,只需要把鍵的值放在GetXXX方法中的參數(shù)位置就可以查找到跟鍵相對(duì)應(yīng)的值
<2>值亥鬓,是一個(gè)默認(rèn)的值,可以不寫(xiě)這個(gè)參數(shù)域庇,默認(rèn)是0嵌戈;寫(xiě)了的話,就是默認(rèn)的值就你寫(xiě)的值,
<4>這個(gè)值是可以通過(guò)Set修改的听皿,一旦修改就是修改的值熟呛,關(guān)掉程序依舊存在,修改完之后把Set的語(yǔ)句刪除也還是修改完之后的值尉姨,不會(huì)影響庵朝,除非你使用刪除方法
(4)判斷是否存在鍵:類(lèi)名.HasKey(鍵)
(5)刪除數(shù)據(jù):類(lèi)名.DeleteKey(鍵)
(6)當(dāng)該鍵沒(méi)有Set的時(shí)候,我們使用Get去得到數(shù)據(jù)有以下幾種情況:
<1>如果Get方法中沒(méi)有寫(xiě)默認(rèn)值又厉,該鍵中存儲(chǔ)的是相應(yīng)類(lèi)型的默認(rèn)值(float九府、int的默認(rèn)值是0,string的默認(rèn)值是null)
<2>如果Get方法中寫(xiě)了默認(rèn)值馋没,那么該鍵中存儲(chǔ)的就是這個(gè)默認(rèn)值
(7)一般數(shù)據(jù)讀取用在初始化數(shù)據(jù)的Start開(kāi)始方法中昔逗,而修改數(shù)據(jù)一般放在Update更新方法中
2.TXT
(1)主要寫(xiě)了創(chuàng)建文件、讀取文件篷朵、刪除文件
(2)using System.IO; ? //對(duì)文件輸入輸出操作的命名空間
<1>StreamWrite類(lèi)(寫(xiě)入流)
1)以行的形式寫(xiě)入信息:對(duì)象.WriteLine(信息)勾怒;
2)關(guān)閉寫(xiě)入流:對(duì)象.Close();
3)銷(xiāo)毀寫(xiě)入流:對(duì)象.Dispose();
<2>StreamReader類(lèi)(讀取流)
1)關(guān)閉讀取流:對(duì)象.Close();
2)銷(xiāo)毀讀取流:對(duì)象.Dispose();
<3>File靜態(tài)類(lèi)
1)刪除文件:類(lèi)名.Delete(文件絕對(duì)路徑);
2)是否存在文件:類(lèi)名.Exists(文件絕對(duì)路徑);
3)創(chuàng)建文本:類(lèi)名.CreateText(文件絕對(duì)路徑);
4)添加文本:類(lèi)名.AppendText(文件絕對(duì)路徑);
<4>FileInfo類(lèi)(文本)
1)文本是否存在:對(duì)象.Exists
2)創(chuàng)建文本:對(duì)象.CreateText();
3)添加文本:對(duì)象.AppendText();
4)打開(kāi)文本:對(duì)象.OpenText();
(3)異常
<1>try{需要檢查是否存在異常的代碼塊}catch(System.Exception){捕獲到異常之后進(jìn)行的操作}
(4)ArrayList (通過(guò)集合讀取每一行的信息)
<1>添加元素:對(duì)象.Add(添加的元素);
(5)using UnityEditor;
<1>刷新Unity編輯界面:AssetDataBase.Refresh();
(6)判斷平臺(tái)做出對(duì)應(yīng)處理
<1>方法一:預(yù)編譯處理声旺、預(yù)編譯命令笔链、宏命令
#if。腮猖。鉴扫。#endif
<2>判斷程序的平臺(tái)是否是當(dāng)前在運(yùn)行的平臺(tái):
1)程序的平臺(tái):Application.platform
2)運(yùn)行的平臺(tái):RuntimePlatform.枚舉成員(不同的平臺(tái))
(7)數(shù)據(jù)路徑:Application.dataPath
在不同的平臺(tái)上的結(jié)果不同:
Unity 編輯器:<工程文件夾的路徑>/Assets
Mac播放器:<到播放器應(yīng)用的路徑>/Contents
iPhone播放器:<到播放器應(yīng)用的路徑>//Data
Win播放器:< 包含可執(zhí)行播發(fā)器的文件夾的路徑>\Data
網(wǎng)絡(luò)播放器:到播放器數(shù)據(jù)文件夾的絕對(duì)路徑(沒(méi)有實(shí)際的數(shù)據(jù)文件名稱(chēng))
Flash: 到播放器數(shù)據(jù)文件夾的絕對(duì)路徑(沒(méi)有實(shí)際的數(shù)據(jù)文件名稱(chēng))
借鑒文章:http://wiki.ceeger.com/script:unityengine:classes:application:application.datapath
(6)File和FileInfo的區(qū)別
File是靜態(tài)類(lèi),對(duì)應(yīng)整個(gè)文件系統(tǒng)進(jìn)行操作澈缺,方法均為靜態(tài)方法坪创,如果只對(duì)文件進(jìn)行少量的操作炕婶,如判斷文件是否存在,或者對(duì)很多文件進(jìn)行操作莱预, 建議使用File類(lèi)柠掂,因?yàn)榭梢员苊忸l繁的創(chuàng)建和釋放對(duì)象,可以減少系統(tǒng)的開(kāi)銷(xiāo)依沮,
?FileInfo是普通類(lèi)涯贞,它對(duì)應(yīng)一個(gè)具體的文件進(jìn)行操作,方法大部分是普通方法危喉,它里面的操作可能也調(diào)用了File靜態(tài)類(lèi)的方法宋渔,如果只對(duì)一個(gè)文件進(jìn)行大量操作,建議使用FileInfo類(lèi)
在安全檢查方面辜限,通過(guò)File類(lèi)去調(diào)用的方法皇拣,都要占用CPU一定的時(shí)間進(jìn)行安全檢查,即使使用File類(lèi)不同的方法重復(fù)的對(duì)一個(gè)文件進(jìn)行訪問(wèn)時(shí)列粪,也是如此审磁。而FileInfo類(lèi)只在創(chuàng)建對(duì)象時(shí)谈飒,執(zhí)行一次安全檢查
3.CSV
(1)右擊桌面背景創(chuàng)建Excel文件
(2)在里面輸入內(nèi)容岂座,中間空幾行,以備后用杭措,凡事留一線
(3)點(diǎn)擊文件费什,另存為,選擇另存為的路徑(切記這里不能直接強(qiáng)制把Excel文件的文件擴(kuò)展名修改成csv或txt類(lèi)型的手素,因?yàn)閤lsx類(lèi)型是以二進(jìn)制格式進(jìn)行存儲(chǔ)的鸳址,csv和txt類(lèi)型是以文本格式進(jìn)行存儲(chǔ)的,不同類(lèi)型強(qiáng)制更改文件擴(kuò)展名泉懦,打開(kāi)會(huì)出現(xiàn)亂碼)
(4)保存類(lèi)型選擇CSV UTF-8(逗號(hào)分隔)稿黍,點(diǎn)擊保存,會(huì)提示你是否修改格式點(diǎn)擊是
(5)為了方便觀察崩哩,我們把文件的文件擴(kuò)展名顯示出來(lái)
(6)首先文件圖標(biāo)不同巡球,其次文件擴(kuò)展名不同,其三.xlsx是以二進(jìn)制格式存儲(chǔ)邓嘹,.csv是以文本格式存儲(chǔ)
(7)因?yàn)閏sv和txt都是文本存儲(chǔ)格式酣栈,所以我們可以直接強(qiáng)制把csv類(lèi)型更改成txt類(lèi)型
(8)更改之后,打開(kāi)是這個(gè)樣子汹押,每一列以逗號(hào)分隔開(kāi)
(9)把Test.txt文本拖到Unity編輯器中
(10)代碼控制:通過(guò)行數(shù)和列名找到要找的信息
這里如果是用的動(dòng)態(tài)加載則需要在Unity編輯器中創(chuàng)建Resources文件夾矿筝,在代碼中寫(xiě)的路徑要跟Unity編輯器中的Resources文件夾底下的路徑對(duì)應(yīng)上,不然會(huì)找不到目標(biāo)文件
<1>TextAsset類(lèi)
1)顯示文本信息:對(duì)象.text
2)切割字符串:字符串對(duì)象.Split(以一個(gè)字符串切割)棚贾;
<2>字符串?dāng)?shù)組:string[] 數(shù)組名
<3>字符串交錯(cuò)數(shù)組:string[][] 數(shù)組名
<4>其他類(lèi)型轉(zhuǎn)換成string類(lèi)型:
方法一:string 對(duì)象名=其他類(lèi)型的對(duì)象名.ToString();
方法二:string 對(duì)象名=string.Format("占位符"窖维,其他類(lèi)型的對(duì)象名);
<5>轉(zhuǎn)換類(lèi)型:轉(zhuǎn)換的類(lèi)型.Parse(被轉(zhuǎn)換的類(lèi)型);
<6>單例模式:
1)聲明一個(gè)單例:public static 此腳本類(lèi)型 對(duì)象榆综;
2)單例對(duì)象實(shí)例化為掛載此腳本的游戲?qū)ο螅粚?duì)象=this铸史;
3)單例的使用:通過(guò)其他腳本中>>腳本名.單例對(duì)象.腳本中方法>>調(diào)用這個(gè)方法
(11)隨便把腳本掛載到一個(gè)游戲?qū)ο笊砩辖蹦辏缓筮\(yùn)行就會(huì)在控制臺(tái)打印出信息
4.JSON
(1)簡(jiǎn)介
JSON 指的是 JavaScript 對(duì)象表示法(JavaScriptObjectNotation)
JSON 是輕量級(jí)的文本數(shù)據(jù)交換格式
JSON 獨(dú)立于語(yǔ)言:JSON 使用 Javascript語(yǔ)法來(lái)描述數(shù)據(jù)對(duì)象,但是 JSON 仍然獨(dú)立于語(yǔ)言和平臺(tái)沛贪。JSON 解析器和 JSON 庫(kù)支持許多不同的編程語(yǔ)言陋守。 目前非常多的動(dòng)態(tài)(PHP,JSP利赋,.NET)編程語(yǔ)言都支持JSON水评。
JSON 具有自我描述性,更易理解
參考網(wǎng)址:http://www.runoob.com/json/json-tutorial.html
JSON 是純文本
JSON 具有"自我描述性"(人類(lèi)可讀)
JSON 具有層級(jí)結(jié)構(gòu)(值中存在值)
JSON 可通過(guò) JavaScript 進(jìn)行解析
JSON 數(shù)據(jù)可使用 AJAX 進(jìn)行傳輸
(2)語(yǔ)法
<1>JSON 語(yǔ)法規(guī)則
JSON 語(yǔ)法是 JavaScript 對(duì)象表示法語(yǔ)法的子集媚送。
1)數(shù)據(jù)在名稱(chēng)/值對(duì)中
2)數(shù)據(jù)由逗號(hào)分隔
3)大括號(hào)保存對(duì)象
4)中括號(hào)保存數(shù)組
<2>JSON 名稱(chēng)/值對(duì)
JSON 數(shù)據(jù)的書(shū)寫(xiě)格式是:名稱(chēng)/值對(duì)中燥。
名稱(chēng)/值對(duì)包括字段名稱(chēng)(在雙引號(hào)中),后面寫(xiě)一個(gè)冒號(hào)塘偎,然后是值
<3>JSON 值
JSON 值可以是:
1)數(shù)字(整數(shù)或浮點(diǎn)數(shù))
2)字符串(在雙引號(hào)中)
3)邏輯值(true 或 false)
4)數(shù)組(在中括號(hào)中)
5)對(duì)象(在大括號(hào)中)
6)null
(3)使用
<1>創(chuàng)建一個(gè)Plugins(插件)文件夾疗涉,系統(tǒng)會(huì)先執(zhí)行它里面的東西,比Awake方法之前執(zhí)行吟秩,引用LitJson.dll文件咱扣,放在Plugins文件夾下
<2>選中LitJson,勾選上Any Platform(所有平臺(tái))
<3>通過(guò)代碼:寫(xiě)入Json文本到文件涵防、讀取Json文本闹伪、從文件中讀取Json文本
用字符串類(lèi)型的一個(gè)對(duì)象來(lái)接收J(rèn)son文本,用@取消轉(zhuǎn)義
1)調(diào)用json操作的命名空間:using LitJson壮池;
1.1)JsonMapper類(lèi)
1.1.1)Json字符串轉(zhuǎn)換成對(duì)象偏瓤,用JsonData類(lèi)型的對(duì)象接收:JsonMapper.ToObject(字符串對(duì)象);
1.1.2)對(duì)象轉(zhuǎn)換成Json對(duì)象,用string類(lèi)型的對(duì)象接收:JsonMapper.ToJson(對(duì)象);
1.2)JsonData類(lèi)
1.2.1)讀取一個(gè)對(duì)象的值:對(duì)象[鍵]
1.2.2)讀取一個(gè)對(duì)象的某個(gè)數(shù)組元素中的值:對(duì)象[數(shù)組鍵][數(shù)組元素的索引值][當(dāng)前數(shù)組元素的鍵]
1.2.3)讀取一個(gè)對(duì)象的數(shù)組元素的個(gè)數(shù):對(duì)象[數(shù)組鍵].Count
1.3)JsonWriter類(lèi)
1.3.1)開(kāi)始寫(xiě)入一組數(shù)據(jù):對(duì)象.WriteObjectStart()椰憋;
1.3.2)結(jié)束寫(xiě)入一組數(shù)據(jù):對(duì)象.WriteObjectEnd();
//以上相當(dāng)于Json文本中的一對(duì)花括號(hào)
1.3.3)鍵:對(duì)象.WritePropertyName(鍵);
1.3.4)值:對(duì)象.Write(值);
//以上相當(dāng)于Json文本中的一組鍵值對(duì)厅克,先寫(xiě)鍵再寫(xiě)值
1.3.5)開(kāi)始寫(xiě)入數(shù)組:對(duì)象.WriteArrayStart();
1.3.6)結(jié)束寫(xiě)入數(shù)據(jù):對(duì)象.WriteArrayEnd();
//以上相當(dāng)于Json文本中的一組方括號(hào)
2)調(diào)用System.Text的命名空間:using System.Text;
2.1)StringBuilder類(lèi)(修改字符串)
2.1.1)String 對(duì)象是不可改變的橙依。每次使用 System.String 類(lèi)中的方法之一時(shí)证舟,都要在內(nèi)存中創(chuàng)建一個(gè)新的字符串對(duì)象,這就需要為該新對(duì)象分配新的空間票编。在需要對(duì)字符串執(zhí)行重復(fù)修改的情況下褪储,與創(chuàng)建新的 String 對(duì)象相關(guān)的系統(tǒng)開(kāi)銷(xiāo)可能會(huì)非常昂貴。如果要修改字符串而不創(chuàng)建新的對(duì)象慧域,則可以使用 System.Text.StringBuilder 類(lèi)鲤竹。
相關(guān)StringBuilder文章:www.jb51.net/article/45832.htm
3)調(diào)用System.IO的命名空間:using System.IO;
3.1)DirectoryInfo類(lèi)
3.1.1)給對(duì)象實(shí)例化所在路徑構(gòu)造方法:new DirectoryInfo(路徑);
3.1.2)是否存在:對(duì)象.Exists
3.1.3)創(chuàng)建目錄:對(duì)象.Create();
3.2)SteamWriter類(lèi)
3.2.1)寫(xiě)入數(shù)據(jù)信息:對(duì)象.WriteLine(信息對(duì)象);
3.2.2)關(guān)閉寫(xiě)入流:對(duì)象.Close();
3.3.3)銷(xiāo)毀寫(xiě)入流:對(duì)象.Dispose();
3.3)File類(lèi)
3.3.1)編輯文本:對(duì)象.AppendText(絕對(duì)路徑);
3.3.2)創(chuàng)建文本:對(duì)象.CreateText(絕對(duì)路徑);
5.XML
5.1XML概念
XML 指可擴(kuò)展標(biāo)記語(yǔ)言(eXtensibleMarkupLanguage)。
XML 被設(shè)計(jì)用來(lái)傳輸和存儲(chǔ)數(shù)據(jù)。
HTML 則被設(shè)計(jì)用來(lái)顯示數(shù)據(jù)辛藻。
XML 是獨(dú)立于軟件和硬件的信息傳輸工具碘橘。
XML 是各種應(yīng)用程序之間進(jìn)行數(shù)據(jù)傳輸?shù)淖畛S玫墓ぞ摺?/p>
5.2XML用途
XML 應(yīng)用于 Web 開(kāi)發(fā)的許多方面,常用于簡(jiǎn)化數(shù)據(jù)的存儲(chǔ)和共享吱肌。
(1)XML 把數(shù)據(jù)從 HTML 分離
如果您需要在 HTML 文檔中顯示動(dòng)態(tài)數(shù)據(jù)痘拆,那么每當(dāng)數(shù)據(jù)改變時(shí)將花費(fèi)大量的時(shí)間來(lái)編輯 HTML。
通過(guò) XML氮墨,數(shù)據(jù)能夠存儲(chǔ)在獨(dú)立的 XML 文件中纺蛆。這樣您就可以專(zhuān)注于使用 HTML/CSS 進(jìn)行顯示和布局,并確保修改底層數(shù)據(jù)不再需要對(duì) HTML 進(jìn)行任何的改變规揪。
通過(guò)使用幾行 JavaScript 代碼桥氏,您就可以讀取一個(gè)外部 XML 文件,并更新您的網(wǎng)頁(yè)的數(shù)據(jù)內(nèi)容猛铅。
(2)XML 簡(jiǎn)化數(shù)據(jù)共享
<1>在真實(shí)的世界中字支,計(jì)算機(jī)系統(tǒng)和數(shù)據(jù)使用不兼容的格式來(lái)存儲(chǔ)數(shù)據(jù)。
XML 數(shù)據(jù)以純文本格式進(jìn)行存儲(chǔ)奸忽,因此提供了一種獨(dú)立于軟件和硬件的數(shù)據(jù)存儲(chǔ)方法堕伪。
這讓創(chuàng)建不同應(yīng)用程序可以共享的數(shù)據(jù)變得更加容易。
(3)XML 簡(jiǎn)化數(shù)據(jù)傳輸
<1>對(duì)開(kāi)發(fā)人員來(lái)說(shuō),其中一項(xiàng)最費(fèi)時(shí)的挑戰(zhàn)一直是在互聯(lián)網(wǎng)上的不兼容系統(tǒng)之間交換數(shù)據(jù)。
由于可以通過(guò)各種不兼容的應(yīng)用程序來(lái)讀取數(shù)據(jù)谨设,以 XML 交換數(shù)據(jù)降低了這種復(fù)雜性。
(4)XML 簡(jiǎn)化平臺(tái)變更
<1>升級(jí)到新的系統(tǒng)(硬件或軟件平臺(tái))桨昙,總是非常費(fèi)時(shí)的检号。必須轉(zhuǎn)換大量的數(shù)據(jù)腌歉,不兼容的數(shù)據(jù)經(jīng)常會(huì)丟失。XML 數(shù)據(jù)以文本格式存儲(chǔ)齐苛。這使得 XML 在不損失數(shù)據(jù)的情況下翘盖,更容易擴(kuò)展或升級(jí)到新的操作系統(tǒng)、新的應(yīng)用程序或新的瀏覽器凹蜂。
(5)XML 使您的數(shù)據(jù)更有用
<1>不同的應(yīng)用程序都能夠訪問(wèn)您的數(shù)據(jù)馍驯,不僅僅在 HTML 頁(yè)中,也可以從 XML 數(shù)據(jù)源中進(jìn)行訪問(wèn)玛痊。通過(guò) XML汰瘫,您的數(shù)據(jù)可供各種閱讀設(shè)備使用(掌上計(jì)算機(jī)、語(yǔ)音設(shè)備擂煞、新聞閱讀器等)混弥,還可以供盲人或其他殘障人士使用。
(6)XML 用于創(chuàng)建新的互聯(lián)網(wǎng)語(yǔ)言
<1>很多新的互聯(lián)網(wǎng)語(yǔ)言是通過(guò) XML 創(chuàng)建的对省。
5.3XML樹(shù)結(jié)構(gòu)
XML 文檔形成了一種樹(shù)結(jié)構(gòu)蝗拿,它從"根部"開(kāi)始晾捏,然后擴(kuò)展到"枝葉"。
5.4XML語(yǔ)法
(1)XML 必須包含根元素哀托,它是所有其他元素的父元素
(2)XML 聲明文件的可選部分惦辛,如果存在需要放在文檔的第一行
(3)在 XML 中,省略關(guān)閉標(biāo)簽是非法的仓手。所有元素都必須有關(guān)閉標(biāo)簽
(4)XML 標(biāo)簽對(duì)大小寫(xiě)敏感胖齐。必須使用相同的大小寫(xiě)來(lái)編寫(xiě)打開(kāi)標(biāo)簽和關(guān)閉標(biāo)簽
(5)在 XML 中,所有元素都必須彼此正確地嵌套嗽冒。
(6)在 XML 中市怎,XML 的屬性值必須加引號(hào)。
(7)在 XML 中辛慰,一些字符擁有特殊的意義区匠。
如果您把字符 "<" 放在 XML 元素中,會(huì)發(fā)生錯(cuò)誤帅腌,這是因?yàn)榻馕銎鲿?huì)把它當(dāng)作新元素的開(kāi)始.
為了避免這個(gè)錯(cuò)誤驰弄,請(qǐng)用實(shí)體引用來(lái)代替 "<" 字符
(8)XML 中的注釋:<!--注釋的內(nèi)容-->
(9)在 XML 中,空格會(huì)被保留速客,在 XML 中戚篙,文檔中的空格不會(huì)被刪減。
(10)XML 以 LF 存儲(chǔ)換行
<1>在 Windows 應(yīng)用程序中溺职,換行通常以一對(duì)字符來(lái)存儲(chǔ):回車(chē)符(CR)和換行符(LF)岔擂。
<2>在 Unix 和 Mac OSX 中,使用 LF 來(lái)存儲(chǔ)新行浪耘。
<3>在舊的 Mac 系統(tǒng)中乱灵,使用 CR 來(lái)存儲(chǔ)新行。
<4>XML 以 LF 存儲(chǔ)換行
(11)XML 元素:指的是從(且包括)開(kāi)始標(biāo)簽直到(且包括)結(jié)束標(biāo)簽的部分七冲。
5.5代碼:
學(xué)習(xí):創(chuàng)建XML痛倚、添加X(jué)ML、更改XML澜躺、讀取XML
命名空間:
(1)using System.Xml;
類(lèi):XmlDocument(XML文檔)蝉稳、XmlNode(XML節(jié)點(diǎn))、XmlElement(XML元素節(jié)點(diǎn))掘鄙、XmlNodeList(XML節(jié)點(diǎn)集合)
<1>XmlDocument
1)對(duì)象.CreateXmlDeclaration(版本號(hào),所使用的編碼,null);
2)把一個(gè)XmlNode類(lèi)型的對(duì)象添加到對(duì)象當(dāng)中:對(duì)象.AppendChild(節(jié)點(diǎn)對(duì)象);
3)創(chuàng)建一個(gè)元素節(jié)點(diǎn):對(duì)象.CreateElement(元素節(jié)點(diǎn)的名字);
4)保存文檔:對(duì)象.Save(保存的路徑);
5)加載文檔:對(duì)象.Load(加載的路徑);
6)選擇單個(gè)節(jié)點(diǎn):對(duì)象.SelectSingleNode(節(jié)點(diǎn)的名字);
7)查找單個(gè)節(jié)點(diǎn)的所有子節(jié)點(diǎn):對(duì)象.SelectSingleNode(節(jié)點(diǎn)的名字).ChildNodes;
<2>XmlNode
1)把其他節(jié)點(diǎn)添加到此節(jié)點(diǎn)中耘戚,作為此節(jié)點(diǎn)的子節(jié)點(diǎn):此節(jié)點(diǎn)對(duì)象.AppendChild(其他節(jié)點(diǎn));
<3>XmlElement
1)創(chuàng)建屬性:對(duì)象.SetAttribute(屬性名字,屬性值);
2)創(chuàng)建文本節(jié)點(diǎn):對(duì)象.InnerText=文本信息;
<4>XmlNodeList
(2)using System.IO;
類(lèi):File(靜態(tài)類(lèi))
<1>File
1)是否存在:File.Exists(路徑)
(3)using UnityEditor;
類(lèi):AssetDatabase(靜態(tài)類(lèi))
<1>AssetDatabase
1)刷新Unity編輯器界面:AssetDatabase.Refresh();
(4)創(chuàng)建XML:把腳本隨便掛載到游戲?qū)ο笊砩?點(diǎn)擊運(yùn)行操漠,點(diǎn)擊game窗口收津,按下A鍵時(shí),5.xml的目錄中多了一個(gè)ChatData.xml文件,文件內(nèi)容如圖
(5)添加X(jué)ML:繼續(xù)按下B鍵朋截,右擊工程視圖蛹稍,點(diǎn)擊Refresh刷新,ChatData中的內(nèi)容多了一部分
(6)更改XML:繼續(xù)按下C鍵部服,右擊菜單刷新唆姐,發(fā)現(xiàn)紅框部分更改了
(7)讀取XML:繼續(xù)按下D鍵,控制臺(tái)打印了節(jié)點(diǎn)的屬性name的值和節(jié)點(diǎn)的文本節(jié)點(diǎn)
(8)XML數(shù)據(jù)生成步驟
<1>引進(jìn)C#的命名空間System.Xml
<2>生成XML文檔(XmlDocument類(lèi))
<3>生成根元素(XmlElement類(lèi))添加給文檔對(duì)象
<4>循環(huán)生成子元素添加給父元素
<5>將生成的XML文檔保存
6.SQL
增廓八、改奉芦、查、刪
(1)SQL編輯器安裝
點(diǎn)擊SQL安裝包剧蹂,依次默認(rèn)點(diǎn)擊即可
此時(shí)声功,我們的安裝目錄下就會(huì)多出SQL編輯器的軟件
(2)新建一個(gè)數(shù)據(jù)庫(kù)文本
<1>雙擊SQL編輯器圖標(biāo)打開(kāi)編輯器,彈出窗口點(diǎn)擊ok
<2>創(chuàng)建一個(gè)新的數(shù)據(jù)庫(kù)
<3>選擇文件保存的位置以及保存的文件名稱(chēng)
(3)通過(guò)SQL編輯器添加列表以及列名
<1>點(diǎn)擊Design宠叼,點(diǎn)擊左下角的加號(hào)
<2>彈出窗口先巴,我們把Table Name(表名)改為user,點(diǎn)擊加號(hào)添加表中的列冒冬,下方的窗口顯示的是對(duì)應(yīng)的SQL語(yǔ)句
<3>雙擊要修改的地方可以修改伸蚯,Type右邊有個(gè)下拉菜單可以選擇數(shù)據(jù)類(lèi)型,上面的修改也會(huì)影響下面的SQL語(yǔ)句
<4>在表中添加5個(gè)列简烤,分別修改列的值類(lèi)型剂邮,點(diǎn)擊創(chuàng)建
<5>此時(shí)列表如圖
(4)通過(guò)SQL語(yǔ)句添加列表以及列名
<1>點(diǎn)擊SQL,輸入創(chuàng)建列表的SQL語(yǔ)句>>create table "列表名"("列名1" 列值類(lèi)型1,"列名2" 列值類(lèi)型2,·····,"列名n" 列值類(lèi)型n);
<2>點(diǎn)擊Execute,左下角顯示對(duì)號(hào)横侦,說(shuō)明運(yùn)行成功
<3>引號(hào)加與不加無(wú)影響
<3>點(diǎn)擊Design挥萌,多了一個(gè)名為guest的table,點(diǎn)擊guest枉侧,也有添加的列名引瀑,對(duì)應(yīng)下面的窗口中的SQL語(yǔ)句跟剛剛寫(xiě)的SQL語(yǔ)句相同
(5)通過(guò)SQL編輯器添加值
<1>點(diǎn)擊Data,點(diǎn)擊user棵逊,點(diǎn)擊加號(hào)
<2>彈出窗口伤疙,分別點(diǎn)擊每一行的列名在下方的窗口里添加內(nèi)容,注意內(nèi)容要與后面的數(shù)據(jù)類(lèi)型相匹配辆影,添加完所有列的值(也就是一行的值),這里必須要添加所有的值才能添加黍特,最后點(diǎn)擊保存
<3>完成后的界面
(6)通過(guò)SQL語(yǔ)句添加值
<1>點(diǎn)擊SQL,輸入添加值的SQL語(yǔ)句>>insert into "列表名" (列名1蛙讥,列名2,······灭衷,列名n) values(列值1, 列值2,·····, 列值n);
如果不寫(xiě)列名次慢,默認(rèn)是全部列名
<2>點(diǎn)擊Execute執(zhí)行SQL語(yǔ)句
(7)通過(guò)編輯器修改值
點(diǎn)擊要修改的地方,會(huì)彈出一個(gè)窗口,把里面的值改為你想要的迫像,然后Update修改更新
(8)通過(guò)SQL語(yǔ)句修改值
<1>點(diǎn)擊SQL,輸入修改值的SQL語(yǔ)句>>update "列表名" set 列名1=值1劈愚,列名2=值2,······闻妓,列名n=值n ?where 條件表達(dá)式
<2>點(diǎn)擊Execute執(zhí)行SQL語(yǔ)句
(9)通過(guò)SQL語(yǔ)句篩選值
<1>點(diǎn)擊SQL,輸入篩選值的SQL語(yǔ)句>>select* from "列表名" where 條件表達(dá)式
*代表顯示所有滿足條件表達(dá)式的列值菌羽,也可以把*換成其他的列名,意思是顯示滿足條件表達(dá)式的列的列值
<2>下方窗口是篩選顯示的值
(10)通過(guò)編輯器刪除一行數(shù)據(jù)
<1>選中user由缆,選中一行注祖,點(diǎn)擊最下面的減號(hào)
(11)通過(guò)SQL語(yǔ)句刪除一行數(shù)據(jù)>>delete from 列表名 where 條件表達(dá)式
(12)通過(guò)SQL語(yǔ)句刪除一個(gè)列表>>drop table "列表名"
總結(jié):
增:insert into "列表名" (列名1,列名2均唉,······是晨,列名n) values(列值1, 列值2,·····, 列值n);
刪:delete from 列表名 where 條件表達(dá)式
改:update "列表名" set 列名1=值1,列名2=值2舔箭,······罩缴,列名n=值n ?where 條件表達(dá)式
查:select* from "列表名" where 條件表達(dá)式
(13)簡(jiǎn)單基本的SQL語(yǔ)句:
(1) 數(shù)據(jù)記錄篩選:
sql="select * from 數(shù)據(jù)表 where 字段名=字段值 order by 字段名 [desc]"
sql="select * from 數(shù)據(jù)表 where 字段名 like '%字段值%' order by 字段名 [desc]"
sql="select top 10 * from 數(shù)據(jù)表 where 字段名=字段值 order by 字段名 [desc]"
sql="select top 10 * from 數(shù)據(jù)表 order by 字段名 [desc]"
sql="select * from 數(shù)據(jù)表 where 字段名 in ('值1','值2','值3')"
sql="select * from 數(shù)據(jù)表 where 字段名 between 值1 and 值2"
(2) 更新數(shù)據(jù)記錄:
sql="update 數(shù)據(jù)表 set 字段名=字段值 where 條件表達(dá)式"
sql="update 數(shù)據(jù)表 set 字段1=值1,字段2=值2 …… 字段n=值n where 條件表達(dá)式"
(3) 刪除數(shù)據(jù)記錄:
sql="delete from 數(shù)據(jù)表 where 條件表達(dá)式"
sql="delete from 數(shù)據(jù)表" (將數(shù)據(jù)表所有記錄刪除)
(4) 添加數(shù)據(jù)記錄:
sql="insert into 數(shù)據(jù)表 (字段1,字段2,字段3 …) values (值1,值2,值3 …)"
sql="insert into 目標(biāo)數(shù)據(jù)表 select * from 源數(shù)據(jù)表" (把源數(shù)據(jù)表的記錄添加到目標(biāo)數(shù)據(jù)表)
(5) 數(shù)據(jù)記錄統(tǒng)計(jì)函數(shù):
AVG(字段名) 得出一個(gè)表格欄平均值
COUNT(*;字段名) 對(duì)數(shù)據(jù)行數(shù)的統(tǒng)計(jì)或?qū)δ骋粰谟兄档臄?shù)據(jù)行數(shù)統(tǒng)計(jì)
MAX(字段名) 取得一個(gè)表格欄最大的值
MIN(字段名) 取得一個(gè)表格欄最小的值
SUM(字段名) 把數(shù)據(jù)欄的值相加
引用以上函數(shù)的方法:
sql="select sum(字段名) as 別名 from 數(shù)據(jù)表 where 條件表達(dá)式"
set rs=conn.excute(sql)
用 rs("別名") 獲取統(tǒng)計(jì)的值,其它函數(shù)運(yùn)用同上层扶。
查詢?nèi)コ貜?fù)值:select distinct * from table1
(5) 數(shù)據(jù)表的建立和刪除:
CREATE TABLE 數(shù)據(jù)表名稱(chēng)(字段1 類(lèi)型1(長(zhǎng)度),字段2 類(lèi)型2(長(zhǎng)度) …… )
(6) 單列求和:
SELECT SUM(字段名) FROM 數(shù)據(jù)表
參考SQL語(yǔ)句大全:https://baike.so.com/doc/3210900-3383815.html
7.SQL的深入
(1)要想在C#中使用數(shù)據(jù)庫(kù)靴庆,我們需要先做一些準(zhǔn)備工作
<1>在Plugins文件夾下添加三個(gè)動(dòng)態(tài)庫(kù)Mono.Data.Sqlite.dll,System.Data.dll怒医,sqlite3.dll
1)先在Assets下新建Plugins(插件文件夾)文件夾炉抒。將Unity的安裝目錄C:\Program Files\Unity\Editor\Data\Mono\lib\mono\2.0
下的Mono.Data.Sqlite.dll,System.Data.dll拷貝至剛才新建的文件夾Plugins 下
2)在電腦中搜索sqlite3.dll,可能會(huì)有多個(gè)同名文件稚叹,我們要那個(gè)在Unity目錄下的焰薄,這個(gè)是我們自己設(shè)定Unity文件所在的位置,實(shí)在不行可以去官網(wǎng)下載 http://www.sqlite.org/download.html
3)右擊打開(kāi)文件所在的位置扒袖,將sqlite3.dll拷貝至Plugins 文件夾下塞茅。
關(guān)于這三個(gè)動(dòng)態(tài)庫(kù)文件,參考文章:http://blog.csdn.net/glunoy/article/details/52037598
<2>修改三個(gè)動(dòng)態(tài)庫(kù)的信息
1)分別選中三個(gè)動(dòng)態(tài)庫(kù)季率,修改信息野瘦,勾選Any Platforms(任意平臺(tái)),unity設(shè)定中CPU選擇Any CPU,OS選擇Any OS
2)下載平臺(tái)全部勾選
3)最后點(diǎn)擊Apply應(yīng)用飒泻,這樣我們就可以在C#中使用數(shù)據(jù)庫(kù)了
(2)引入要添加的數(shù)據(jù)庫(kù)文件
(3)創(chuàng)建腳本文件
<1>命名空間:using Mono.Data.Sqlite;
類(lèi):SqliteConnection鞭光、SqliteCommand、SqliteDataReader
1)SqliteConnection
1.1)創(chuàng)建一個(gè)與數(shù)據(jù)庫(kù)鏈接的鏈接對(duì)象:SqliteConnection(數(shù)據(jù)庫(kù)路徑);
1.2)打開(kāi)數(shù)據(jù)庫(kù):對(duì)象.Open();
1.3)創(chuàng)建數(shù)據(jù)庫(kù)命令:對(duì)象.CreateCommand();
1.4)關(guān)閉數(shù)據(jù)庫(kù)鏈接:對(duì)象.Close();
1.5)銷(xiāo)毀數(shù)據(jù)庫(kù)鏈接:對(duì)象.Dispose();
2)SqliteCommand
2.1)輸入命令文本:對(duì)象.CommandText=信息泞遗;
2.2)執(zhí)行SQL語(yǔ)句方法一:
受到影響的的行數(shù)惰许,此方法只能用來(lái)增刪改:對(duì)象.ExecuteNonQuery();
2.3)執(zhí)行SQL語(yǔ)句方法二:
當(dāng)有多個(gè)查詢結(jié)果,只返回第一行第一列的值史辙,此方法在查詢結(jié)果只有一個(gè)的時(shí)候使用汹买,對(duì)象.ExecuteScalar();
2.4)執(zhí)行SQL語(yǔ)句方法三:
可以返回多個(gè)或所有信息佩伤,對(duì)象.ExecuteReader();
3)SqliteDataReader
3.1)當(dāng)前行是否有可讀信息:對(duì)象.Read();
3.2)可讀的行數(shù):對(duì)象.FieldCount;
<2>命名空間:using UnityEngine;
類(lèi):Application
1)Application
1.1)找到要鏈接的數(shù)據(jù)庫(kù)所在的目錄:"Data Source="+Application.streamingAssetsPath+"StreamingAssets目錄下的目錄"
8.WWW
(1)簡(jiǎn)單使用WWW類(lèi)
<1>代碼貼圖:
<2>WWW類(lèi):
1)創(chuàng)建一個(gè)鏈接路徑的WWW對(duì)象:WWW(本地鏈接或者時(shí)網(wǎng)絡(luò)鏈接);
本地鏈接:需要在路徑前面加file://
網(wǎng)絡(luò)鏈接:服務(wù)器鏈接
2)錯(cuò)誤:對(duì)象.error
3)是否在做:對(duì)象.isDone
4)圖片信息:對(duì)象.texture
5)卸載:對(duì)象.Dispose();
<2>IEnumerator協(xié)程
等待對(duì)象完成操作:yield return 一個(gè)對(duì)象;
最后:這里不奇怪了晦毙,按理說(shuō)數(shù)據(jù)庫(kù)什么應(yīng)該時(shí)挺多的生巡,但我們這里是針對(duì)游戲開(kāi)發(fā),而在游戲開(kāi)發(fā)中需要的并不多见妒,基本操作即可孤荣。。