Unity 資料儲存自總

2021-08-30 19:29:10 字數 4045 閱讀 2494

資料傳輸要 using system.io (i==>input,o==>output) io流:指資料輸入輸出流

傳輸txt要 using system.text

處理資料夾:

類名:directory

str = "\n" :預設情況下(\)符號在字串表示轉義符

str = @"\n":如果在前面加@符號,那麼(\)將作為字元存在,不代表轉義符,即@符號用於取消轉義

directory.getcurrentdirectory(); 當前應用程式絕對路徑

directory.exists(@"c:\hehe\新建資料夾") ==> 返回bool值,判斷資料夾路徑是否存在

directory.greatedirectory(@"c:\hehe\新建資料夾") ==> 建立資料夾

directory.delete(@"c:\hehe\新建資料夾", true) ==> 刪除資料夾

directory.move(@"c:\hehe\新建資料夾",@"c:\lol\新建資料夾") ==>移動資料夾,也可以用這個方法實現資料夾重新命名

string files = directory.getfiles(@"c:\hehe\新建資料夾") ==> 獲取路徑資料夾下的所有檔案

string dires = directory.getdirectories(@"c:\hehe\新建資料夾") ==> 獲取路徑下的所有資料夾

類名:file

file.delete(@"c:\hehe\新建資料夾\hehe.jpg") ==> 刪除指定檔案,注意檔案字尾

file.move(@"c:\hehe\新建資料夾\hehe.jpg") ==> 移動指定檔案

file.copy(@"c:\hehe\新建資料夾\hehe.jpg",@"c:\hehe\新建資料夾\lol.jpg") ==>拷貝,前後名字可以不一樣,字尾也可以不一樣

filestream fs = file.create(@"c:\hehe\新建資料夾\haha.txt") ==> 建立檔案

file.exists(@"c:\hehe\新建資料夾\haha.txt") ==> 返回乙個bool,判斷檔案是否存在

filemode列舉型別:

open 開啟乙個已有檔案

create 建立乙個新檔案,如果存在舊覆蓋的方式覆蓋掉舊檔案

greatenew 建立乙個新檔案,檔案必須是不存在的

openorcreate 檔案存在則開啟,否則建立乙個新檔案

filesteam 類

filestream.read(byte(讀取出來的資料放這裡),int(從位元組陣列第幾位開始存),bytes.lenght(提供多少個位置來存放讀取的內容))

filestream.write(byte(寫入檔案的內容轉成位元組陣列)),int(從位元組陣列第幾位開始寫入),bytes.lenght(從位元組陣列中寫入多少位))

filestream.seek(0(決定向前移動還是向後移動),seekorigin(從什麼位置開始移動))

三個位元組代表乙個中文

讀取檔案流程

using system.io;

using system.text;

.......

public const string filepath = @"c:\hehe\lol.txt";

public const int buff_size = 10;

public string msg = "hehehehehe";

if (file.exists(filepath)) //檔案是否存在

else

streamreader 類 (文字讀取器(只能讀文字))

streamreader sr = new streamreader(path(路徑),system.text.ecoding.utf8(格式));

string str = sr.readline();(唯讀一行)

string str = sr.readtoend();(全讀)

streamwriter 類 (文字寫入(寫入文字))

streamwriter sw = new streamwriter(file(路徑))

streamwriter sw = new streamwriter(file(路徑),true(是否追加(游標位置)),system.text.encoding.utf8(格式))

sw.write("hehe");

//從位元組陣列轉成

texture2d t = new texture2d(512,512);

t.loadimage(bytes); ===>返回乙個bool值判斷轉換是否成功,如果成功把值給t

return t;

www 類

載入網路方法: @"https:// baidu.com/***/***/fafa.gif"

載入本地方法: @"file:// c:\桌面\111.png"

寫入協程裡==> while(!www.isdone) 每幀做一次 或者yield return www;

}json 使用固定文字格式來儲存和表示資料

json鍵值對:使用(:)冒號來區分,冒號右邊的部分是"鍵",鍵都是使用引號("")包裹的字串,每個鍵值對之間用逗號分隔,

例: 花括號:表示物件 ==>花括號中每乙個鍵值對都表示這個物件裡的變數和變數所對應的值,鍵名對應物件裡的變數名,值對應這個變數名為鍵名的這個變數所對應的值

方括號:表示陣列 ==> 例: ==>陣列裡是值型別

值的取值:

數字(整數或浮點)

字串(用雙引號包裹)

bool(true,false)

陣列(在方括號中)

物件(花括號中)

null

json初學者輸入易犯錯誤:

所有("")都是英文,不要出現中文

花括號與方括號前後是否能對應上

最後乙個資料後面是否有逗號

jsonutility.tojson() ==>括號裡填object型別的東西 例如 乙個類 

jsonutility.tojson(object,bool) ==>bool指是否帶有格式的轉化

這裡要轉成json必須要序列化

序列化:把物件轉換成位元組序列的過程稱為序列化

反序列化:把位元組序列轉換成物件的過程

類/結構體名上面空的一行上加[system.serializable]  ,變數名上面一行加[serializefield] 後才表示這個類/結構體或這個變數名是可以序列化的,然後才能用tojson方法

列舉不用serializable

jsonutility.fromjson(string(json格式的字串,一般是從json檔案中讀取出來的字串))

myclass myclass = new myclass();      myclass = jsonutility.fromjson(jsonstr);

常見報錯:

argument exception json格式錯了

nullreferenceexception 類未加序列化標識

除了resources資料夾外的其他幾個重要資料夾及其各平台路徑:

streamingassets

mac path =  /users/***/library/caches/companyname/product name

android path =  /data/data/***.***.***/files   或   /android/data/com.company.***/files

Unity 資料儲存

資料data 計算機裡的一切都是data 操作乙個資料的話宣告就好了,比如 int 1 但操作一大堆資料就需要資料結構 data structure 初始設定時必須分配好array的大小 宣告時不用規定大小,故不確定大小時用list。queue是一種 first in first out 的資料結構...

Unity的AssetBundle使用總結

assetbundle作為unity引擎的資源載入管理和熱更新手段,在各大專案內普遍的使用著。assetbundle使用方式簡單,只要設定assetbundlename,然後打包出檔案,在執行過程中載入就可以使用,但很多細節上的問題,會影響實際使用的效果。之前我也寫過很多篇文章介紹assetbund...

Unity資料儲存Sqlite的使用

之前的專案中基本都是使用playerprefs來儲存資料,但是由於後期資料結構複雜的情況下,比如儲存乙個list的結構資料,通常是自己控制寫法新增逗號,分號來將資料分隔開。如果 寫錯了,整個資料就會錯位導致資料錯亂,維護起來非常麻煩。由於伺服器的資料儲存都是使用資料庫sql,因此打算在前端也使用資料...