1. 程式人生 > >資料儲存,資源管理和載入

資料儲存,資源管理和載入

資料儲存
PlayerPrefs 遊戲存檔
作用:在遊戲會話中儲存和訪問遊戲存檔。
儲存路徑:
Mac OS X: ~/Library/Preferences/Unity/WebPlayerPrefs
Windows: %APPDATA%\Unity\WebPlayerPrefs
一個遊戲存檔檔案對應一個web播放器URL並且檔案大小被限制為1MB。如果超出這個限制,SetInt、SetFloat和SetString將不會儲存值並拋


出一個PlayerPrefsException。


PlayerPrefs 類方法
SetInt:設定由key確定的引數值
GetInt:如果存在,返回偏好檔案中key對應的值
SetFloat:設定由key確定的引數值

GetFloat:如果存在,返回遊戲存檔檔案中key對應的值
SetString:設定由key確定的引數值
GetString:如果存在,返回遊戲存檔檔案中key對應的值
HasKey:如果key在遊戲存檔中存在,返回true
DeleteKey:從遊戲存檔中刪除key和它對應的值
DeleteAll:從偏好中刪除所有key。請謹慎使用


Xml
XmlDocument類: XmlDocument類的物件代表了一個XML文件
Load:載入指定的xml資料
Save:將XML文件儲存到指定的位置
CreateElement:建立元素
AppendChild:新增節點
SelectSingleNode:選擇文件中匹配表示式的第一個節點



用指令碼建立XML檔案首先需要在指令碼開頭新增using System.Xml;


XmlElement類
節點類:XmlNode類與XmlElement類區別 
XmlElement繼承自XmlLinkedNode又繼承自XmlNode類,由此可知XmlElement是XmlNode的子類。我們知道子類繼承了父類所有的屬性和方法,


因此,XmlNode所擁有的方法和屬性,在XmlElement類中也是可以使用的。
XmlElement是具現類,可以直接例項化,而XmlNode是抽象類,必須通過XmlDocument例項通過CreateNode建立。
XmlElement是特殊的XmlNode類,Xml節點有多種型別:屬性節點、註釋節點、文字節點、元素節點等。也就是XmlNode是這多種節點的統稱。



但是XmlElement專門指的就是元素節點。


XmlNode和XmlElement。這兩個類的功能極其類似: 1、通過繼承關係XmlElement繼承自XmlLinkedNode又繼承自XmlNode類,由此可知


XmlElement是XmlNode的子類。我們知道子類繼承了父類所有的屬性和方法,因此,XmlNode所擁有的方法和屬性,在XmlElement類中也是可


以使用的。 2、XmlElement是特殊的XmlNode類,Xml節點有多種型別:屬性節點、註釋節點、文字節點、元素節點等。也就是XmlNode是這


多種節點的統稱。但是XmlElement專門指的就是元素節點。 3、XmlElement是具現類,可以直接例項化,而XmlNode是抽象類,必須通過


XmlDocument例項通過CreateNode建立。 4、XmlElement擁有眾多對Attribute的操作方法,可以方便的對其屬性進行讀寫操作(XmlNode也


可以通過Attributes屬性獲取屬性列表)。 5、在網上看到有人這麼評論這兩個類的區別:XmlNode包含子節點,XmlElement只包含屬性及


其本身不含有子節點。但是我通過程式碼測試,發現即使是XmlElement,也可以通過ChildNodes來獲取子節點列表。雖然在斷點中斷模式下,


我並沒有發現XmlElement有ChildNodes屬性。舉例如下: //是XmlNode也是XmlElement,但是img以及aspnet.jpg只是XmlNode 


       //既是XmlNode 也是XmlElement             C#      //只是XmlNode   


          也就是元素節點可以相應轉換為XmlElement,這樣既可以使用XmlNode的功能,也可以使用它特有的對屬性的操作


方法。 任意節點都可以使用XmlNode,因為XmlNode是所有Node的父類。




InnerText(屬性):獲取或設定節點及其所有子級的串聯值
SetAttribute:設定具有指定名稱的特性的值
GetAttribute:返回具有指定名稱的特性的值
RemoveAttribute:按名稱移除特性
AppendChild:將指定的節點新增到該節點的子節點列表的末尾


http://msdn.microsoft.com/zh-cn/library/system.xml.xmlelement.aspx


Json
JSON 是儲存和交換文字資訊的語法。類似 XML。JSON 比 XML 更小、更快,更易解析。
JSON 指的是 JavaScript 物件表示法(JavaScript Object Notation)
JSON 是輕量級的文字資料交換格式
JSON 獨立於語言
JSON 具有自我描述性,更易理解
需要將LitJson.dll檔案放在Assets資料夾下
按照最簡單的形式,可以用下面這樣的 JSON 表示名稱/值對:
{ "firstName": "Brett" } 
這個示例非常基本,而且實際上比等效的純文字名稱/值對佔用更多的空間:firstName=Brett 
但是,當將多個名稱/值對串在一起時,JSON 就會體現出它的價值了。首先,可以建立包含多個名稱/值對的記錄,比如:
{ "firstName": "Brett", "lastName":"McLaughlin", "email": "[email protected]" } 


http://www.cnblogs.com/TDYToBaby/archive/2010/05/13/1734357.html


值的陣列
當需要表示一組值時,JSON 不但能夠提高可讀性,而且可以減少複雜性。
例如,假設您希望表示一個人名列表。在 XML 中,需要許多開始標記和結束標記;如果使用 JSON,就只需將多個帶花括號的記錄分組在


一起。


1.物件是屬性、值對的集合。一個物件的開始於“{”,結束於“}”。每一個屬性名和值間用“:”提示,屬性間用“,”分隔。
2.陣列是有順序的值的集合。一個數組開始於"[",結束於"]",值之間用","分隔。
3.值可以是引號裡的字串、數字、true、false、null,也可以是物件或陣列。這些結構都能巢狀。
4.字串和數字的定義和C或Java基本一致。

5.JSON 提供了一種優秀的面向物件的方法,以便將元資料快取到客戶機上。

資源管理和載入
AssetBundle
AssetBunle是Unity引擎提供的一種用於儲存資源的檔案格式,它可以儲存任意一種Unity引擎能夠識別的資源,例如模型、紋理、音效、動


畫片段甚至數個場景等。
開發者可以在遊戲執行時從伺服器上的AssetBunle包中提取資源,從而實現資源的動態載入


Resources資源讀取
在使用AssetBunle之前首先介紹下Resources資源讀取,資源讀取是將Project工程列表中的Asset資源通過名稱讀取到記憶體後進行例項化使用


,Resources.Load可針對任何遊戲中可使用的資源型別。
Resources.Load(“Name”,type);
注意:如果直接從Project列表中載入資源需要建立Resources資料夾將資源放在其中


資源類中的各個方法
FindObjectsOfTypeAll:返回Type型別的所有物體的一個列表
Load:載入儲存在Resources資料夾中path處的資源
LoadAll:載入Resources資料夾中的path資料夾或者檔案中的所有資源
LoadAssetAtPath:返回所在資源路徑上的一個資源
UnloadUnusedAssets:解除安裝未使用的資源


AssetBundle打包資源
使用者可以使用Unity指令碼在Unity編輯器中建立AssetBunle檔案,Unity提供了3種建立AssetBunle的方法:
BuildPipeline.BuildAssetBundle
BuildPipeline.BuildStreamedSceneAssetBundle
BuildPipeline.BuildAssetBundleExplicitAssetNames


BuildAssetBundle方法
BuildPipeline.BuildAssetBundle:
通過該命令,使用者可以將編輯器中任意型別的資源打包成AssetBundle
bool BuildAssetBundle (Object mainAsset  , Object[] assets , string pathName , BuildAssetBundleOptions 


options  =BuildAssetBundleOptions.CollectDependencies  |


 BuildAssetBundleOptions.CompleteAssets, BuildTarget = BuildTarget.WebPlayer targetPlatform ) :


mainAsset:用於指定該AssetBunle檔案中的主要資源,該資源可通過AssetBunle. mainAsset來直接進行讀取
assets:用於指定該AssetBunle檔案包含的資源
pathName:用於指定該AssetBunle檔案的建立地址
assetBunleOptions:用於指定該AssetBunle檔案的建立選項,預設情況下為Collect Dependencies和CompletAssets
targetPlatform:用於指定該AssetBundle檔案所用於的釋出平臺


BuildStreamedSceneAssetBundle方法
BuildPipeline.BuildStreamedSceneAssetBundle:
通過該命令,使用者可以直接將專案中的一個或若干個場景以流式載入的方式打包成AssetBundle檔案
string BuildStreamedSceneAssetBundle (string[] levels , string  locationPath , BuildTarget  target ) 
levels:用於指定要打包進入AssetBunle檔案的場景名稱
locationPath:用於指定該AssetBunle檔案的建立地址
target:用於指定該AssetBunle檔案所用於釋出的平臺


BuildAssetBundleExplicitAssetNames
BuildPipeline.BuildAssetBundleExplicitAssetNames:
該命令功能與BuildPipeline.BuildAssetBundle方法相同,但建立時可以為每個Object指定一個自定義的名字。


bool BuildAssetBundleExplicitAssetNames (Object[] assets , string[] assetNames, string 


pathName, BuildAssetBundleOptions assetBundleOptions   =BuildAssetBundleOptions.CollectDependencies |


 BuildAssetBundleOptions.CompleteAssets, BuildTarget targetPlatform  = BuildTarget.WebPlayer) :
assetNames引數用於指定AssetBundle檔案中的資源名稱,其它引數參考BuildPipeline.BuildAssetBundle方法


非快取機制
通過建立一個WWW例項來對AssetBunle檔案進行下載,下載後的AssetBundle檔案將不會進入Unity引擎特定的快取區


快取機制
通過WWW.LoadfromCacheorDownload介面來下載AssetBundle檔案。下載後的AssetBundle將自動被存放在Unity引擎特定的快取區內,該方法


是Unity推薦的AssetBundle檔案下載方式。


從AssetBundle中載入Assets
AssetBundle.Load:可以通過名字來將AssetBundle檔案中包含的對應Asset載入到記憶體中,也可以通過引數來指定載入Asset的型別
AssetBundle.LoadAsync:作用與AssetBundle.Load相同,不同的是該方法是對Asset進行非同步載入,即時載入時主執行緒可以繼續執行,所以


該方法適用於載入一個較大的Asset或者同時載入多個Assets
AssetBundle.LoadAll:一次性載入AssetBundle檔案中的所有Assets,同AssetBundle.Load一樣,可以通過指定載入Asset的型別來選擇性地


載入Assets。


解除安裝AssetBundle
Unity提供了AssetBundle.Unload介面來解除安裝AssetBundle檔案,它的完整定義如下
void Unload ( bool unloadAllLoadedObjects ) 
該方法有一個bool引數。如果把該引數設定成false,則呼叫該方法時只會解除安裝AssetBundle自身,並不會對從AssetBundle中載入的Assets有


任何影響;如果把該引數設定程true,則除了AssetBundle物件自身,所有從當前AssetBundle中載入的Assets也會被同時解除安裝,無論它們是


否還在被使用。建議將該引數設定成false。只有當很明確地知道從AssetBundle中載入的Assets不再會被任何其它物件引用的時候,才設定


成true。

相關推薦

資料儲存資源管理載入

資料儲存PlayerPrefs 遊戲存檔作用:在遊戲會話中儲存和訪問遊戲存檔。儲存路徑:Mac OS X: ~/Library/Preferences/Unity/WebPlayerPrefsWindows: %APPDATA%\Unity\WebPlayerPrefs一個

anzhsoft的技術專欄(專注分散式資源管理資料處理平臺: Since Dec. 2013)

RabbitMQ從入門到精通 RabbitMQ是一個在AMQP基礎上完整的,可複用的企業訊息系統。它可以用於大型軟體系統各個模組之間的高效通訊,支援高併發,支援可擴充套件。

Unity5 怎樣做資源管理增量更新

能開 網上 mes var file 刪除 bundle text 就會 工具 Unity 中的資源來源有三個途徑:一個是Unity自己主動打包資源。一個是Resources。一個是AssetBundle。 Unity自己主動打包資源是指在Unit

Django中資料儲存資料加密功能

1、cookie 1、會話技術 2、客戶端的會話技術(資料儲存在瀏覽器上 ) 3、問題 導致原因:在web應用中,一次網路請求是從request開始,到response結束,跟以後的請求或者跟其他請求沒有關係 (導致每次請求之間的資料沒有關係(短連線、長連結)) 解決:在

Android開發(2):資料儲存之一:SharedPrefrences檔案讀寫

一、資料儲存 本文主要講前兩種儲存方式,其中檔案讀寫只記錄Internal Storage方式 1. SharedPrefrences方式 輕量級NVP方式儲存,以XML的檔案方式儲存,適合少量資料的儲存。 NVP:Name/Value pair, 名稱/值 對。 2.

面對海量資料儲存如何保證HBase叢集的高效以及穩定

內容來源:2018 年 09 月 15 日,平安科技資料平臺部大資料高階工程師鄧傑在“中國HBase技術社群第五屆MeetUp ——HBase應用與發展”進行《HBase應用與實踐》的演講分享。IT 大咖說作為獨家視訊合作方,經主辦方和講者審閱授權釋出。 閱讀

裝修新 Linux 伺服器(資料遷移環境配置埠開放)

Linux 如何變成一個伺服器?如何轉移服務到新的伺服器?且看本篇清單 ☸ 資料遷移 檔案遷移 如果 需要舊伺服器上的一些檔案,就需要進行資料遷移 # 本機 -> 遠端 scp /root [e

資料機器學習資料探勘的聯絡與區別

資料探勘是從海量資料中獲取有效的、新穎的、潛在有用的、最終可理解的模式的非平凡過程。 資料探勘中用到了大量的機器學習界提供的資料分析技術和資料庫界提供的資料管理技術。 從資料分析的角度來看,資料探勘

tof 相機的資料讀取depth dataamplitude data以及3D資料

1.開發前提 如果相機帶有SDK 也就是開發需要的工具以及包,就要用相機帶的開發包,裡面包含了相應的讀取檔案的函式,以及設定的相機的相關函式。 本文使用的是TTF相機,C++標頭檔案程式碼如下: #include "../../include/TTF_API.h" #i

樹形結構資料儲存方案的選擇java list轉tree

樹形結構資料儲存方案 Adjacency List:每一條記錄存parent_idPath Enumerations:每一條記錄存整個tree path經過的node列舉Nested Sets:每一條記錄存 nleft 和 nrightClosure Table:維護一個表,所有的tree path作為

Android資料儲存(3)SQLite簡介簡單的登入與註冊原始碼

操作SQLite資料的基本操作步驟: Android群:239123204 (在此不考慮用SQLiteOpenHelper類)  1.獲取SQLiteDatabase物件db建立資料庫或連線資料庫:SQLiteDatabasedb = SQLiteDatabase.op

BigData_A_A_03-YARN-資源管理任務排程(2)共同好友(spark)

楔子 最近看了hadoop求共同好友,也瞭解一些spark基本程式設計,感覺 思路 一致,可以試試spark demo 是否是直接好友,因為存在這種情況,他倆是直接好友,但是他倆同時也是別人的間接好友,這種情況排除,因此兩次flatMap,第二次就是為了排除第一

BigData_A_A_03-YARN-資源管理任務排程(2)共同好友(hadoop)

楔子 hadoop 統計共同好友 demo 思路是 兩次遍歷,按照 他倆是不是直接好友,如果是直接好友,輸出 key(friendA + “:” + friendB) value(0) 如果 他倆是同一個人的好友 輸出 key(friendA + “:”

BigData_A_A_03-YARN-資源管理任務排程(1)

楔子 計算每個月溫度最高的2天 data 資料 code https://github.com/qianlicao51/hd/tree/master/src/main/java/cn/sxt/day1/hdfs/weather 比較時使用了 apa

servlet 資料儲存幾種方式jsp 作用域

有5個物件儲存資料: ServletContext ---application  當tomcat服務一啟動,資料儲存一致有效,當tomcat服務一停止,ServletContext物件消失。 session----session   當第一次使用者輸入一個網址,且帶有一些

Spark的資源管理排程模式

1.Spark-standalone Standalone的模式下,spark的資源管理和排程是自己來管理和排程的,主要由master來管理。 2.Spark-yarn ResourceManager NodeManager ApplicationMaster Contai

對整數浮點數儲存little-endianbig-endian位元組順序以及位運算的一點回顧

對問題的一些理解 1.位運算及其相關運算 位運算 &,|,^,~,<<,>>,+,! 用 異或^ 可以交換兩個變數,不需要中間變數 a = a ^ b;   // a = 0000 1111 b = b ^ a;   // b = 0000

Android使用SharedPreferences進行資料儲存快取ID等資料

儲存資料 SharedPreferences sharedPre = getSharedPreferences("idpath", MODE_PRIVATE); SharedPreferences.Editor editor=sharedPre.edit(); editor.commit();

資料科學機器學習人工智慧有什麼區別?

當我作為資料科學家介紹自己的時候,我經常會遇到像“資料科學和機器學習有什麼區別”或者“這是否意味著你在從事人工智慧研究?”這樣的問題,我已經回答了無數遍,這些回答已經符合了我的 “三次準則”: 當你寫相同的程式碼寫了三遍時,你就應該去寫一個函式 當你給出相同的個

資料時代Wyn Enterprise您一起探討CIO的困境出路 ZT

這是一篇知識分享帖,如果您致力於成為一名CIO,希望您能夠閱讀完,資訊雖然簡略,但我們依然希望可以幫到您。 CIO:資訊長 CIO是幹什麼的 一、經典的CIO主要負責什麼 1、IT戰略規劃、IT預算籌劃與管理 2、IT平臺構建、IT系統整合 3、IT專案管理:選型、實施推進、驗收