資料傳輸要 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,因此打算在前端也使用資料...