別人的**
publicenum
resourcetype
private
hashtable m_prefabtable;
dictionary
dictionary;
public
scenemgr()
public gameobject load(resourcetype type, string path, bool cache = false
)
else
obj = resources.load(sbr.tostring()) as
gameobject;
if(cache)
}return
object.instantiate(obj);
}
gameobject go;void
start ()
//update is called once per frame
void
update ()
if (input.getmousebuttondown(1
))
}
這個**沒什麼問題. 只需要在需要生成物體的地方呼叫一下,傳給乙個列舉資源型別, 乙個預設名字,和乙個是否使用快取的bool. , 我想用自己的方式實現了一下出了一些問題
細看:
public gameobject loadresources(resourcetype type, string path, bool iscache = true)
}gotemp = resources.load(sbr.tostring()) as
gameobject;
object.instantiate(gotemp);
dictionary.add(sbr.tostring(), gotemp);
debug.log(
"new");
return
gotemp;
}
只是修改了這個類,乍一看沒什麼不一樣,只是改了一下列舉.tostring,節省了一些**, 但是實際上不是這樣的. 當我點選滑鼠右鍵的時候. 報了有資源在使用物件,不能夠destory, 問題有了 找了找解決了更改為如下**
1public gameobject loadresources(resourcetype type, string path, bool iscache = true)2
17}1819 gotemp = resources.load(sbr.tostring()) as
gameobject;
2021
dictionary.add(sbr.tostring(), gotemp);
22 debug.log("
new"
);23
return
object.instantiate(gotemp);
2425 }
注意第15行和第23行, 這裡就是區別 , 這裡我猜測, 因為前邊的**是在這個類中生成的例項,而返回的是乙個記憶體的轉殖體, 在修改後直接將物件返回,就沒有出現資源在占用不能刪除這樣的錯誤了. 還挺奇怪的, 在這裡寫乙個記錄,
update: 又發現了乙個問題, 就是如果第三個引數傳的是false,那麼會出現key重複的情況, 所以下邊這種不可取, 還是使用上邊的方式
Starling之資源管理類
分享 概述每個遊戲或應用都必須有若干的資源 無論是紋理,聲音,位 字,或其它各種物件。這些資源可以是嵌入的 可以理解為所有資源都在乙個檔案的瀏覽器遊戲 或隨遊戲進行的 適用於手機遊戲儲存ram需要嵌入物件 在如何引入資源以不同的方式訪問它們有許多選擇。assetmanager幫助你做到這些。它是允許...
Starling之資源管理類
概述 每個遊戲或應用都必須有若干的資源 無論是紋理,聲音,位 字,或其它各種物件。這些資源可以是嵌入的 可以理解為所有資源都在乙個檔案的瀏覽器遊戲 或隨遊戲進行的 適用於手機遊戲儲存ram需要嵌入物件 在如何引入資源以不同的方式訪問它們有許多選擇。assetmanager幫助你做到這些。它是允許你以...
Item 14 資源管理類的拷貝
raii物件只能管理堆上new出來的資源,其它的不行。比如下面的mutex 只能自定義乙個資源管理類,來管理這個mutex資源,以防止它被意外地忽略。使用方法如下 如果拷貝乙個raii資源,會發生什麼?一般的處理方式 1 因為有的拷貝raii資源無意義,比如lock。所以禁止拷貝 2 如果拷貝有意義...