轉(zhuǎn)自:http://blog.csdn.net/kun1234567/article/details/7712231 u3d里動(dòng)態(tài)創(chuàng)建對(duì)象,需要使用prefab 而創(chuàng)建的時(shí)候 MonoBehaviour.Instantiate( GameObject orignal) 需要一個(gè)作為原型的對(duì)象,。 本文提供三種方式獲得prefab對(duì)象,。
方式一:使用腳本的public字段 直接在Project視圖里找到做好的prefab,將其拖拽到指定腳本的指定public GameObject 字段,。
方式二:Resource類 1,、在Assets目錄下的任意位置創(chuàng)建一個(gè)名為resources的文件夾,將做好的prefab放到這個(gè)文件夾下,,path形式如下: Assets\....\resources\prefabName.prefab 2,、在代碼里使用Resource.Load 或 LoadAll 函數(shù),獲得原型對(duì)象,。 指定prefab時(shí)不需要指定擴(kuò)展名(.prefab),,形式如下: GameObject prototype = Resource.Load("prefabName") as GameObject; 可以有任意數(shù)量的resources文件夾,懷疑是Resource類初始化的時(shí)候會(huì)搜集所有resources文件夾里的文件名,。
方式三:加載到場(chǎng)景 一般我們制作Perfab的時(shí)候,,都是在Hierarchy視圖里創(chuàng)建GameObject,然后再搭建Prefab,。 事后根據(jù)需要?jiǎng)h除這個(gè)原始的GameObject,。 因此我們可以保留這個(gè)GameObject,然后在場(chǎng)景加載后Find這個(gè)對(duì)象(代碼方式),,或者使用腳本public字段(編輯器方式),。
使用方式一更符合unity的風(fēng)格吧。 我使用方式二,,因?yàn)槲沂浅绦騿T~~想一切用代碼來控制,。 方式三比較羅嗦了。 |
|