Unity之掛載小問題

愚者lz發表於2020-09-24

Unity之掛載小問題

在使用Unity開發遊戲的過程中,我們會遇到很多預製體,動畫,UI精靈,特效要掛載,不過這樣子直接掛載相信大家在打包或者在其他版本的Unity上執行會出現丟失的情況。
如果不想直接掛載的話可以在程式碼裡面載入。Unity提供了一個Resources資料夾可以供我們在程式碼載入檔案。

(1)載入預製體

//子彈定義
private GameObject M_Bullet;
//Start()裡面初始化子彈
M_Bullet = Resources.Load("Prefabs/Bullet") as GameObject;

初始化的時候建議設為私有,那樣的話在Unity編譯器裡面就沒有顯示可提供掛載的選項了。
Resources.Load();是Unity內建API,可以載入在Resources資料夾裡面的資源,
Prefabs是Resources資料夾裡面的一個資料夾。值得一提的是在開發中做好資料夾的分類能讓你更愉快地開發遊戲,要不然你會在找各種資源的過程中瘋掉。
Bullets是Resources/Prefabs裡面的一個預製體,要注意的是路徑不用輸入Resources,因為只有在Resources裡面的資源才能用Resources.Load();載入,所以Unity的開發者就把Resources路徑省略了。
as GameObject是把載入的預製體轉換為GameObject型別。

(2)載入場景裡面的資源

//槍身定義
private Transform M_BulletSpawnAnchor;
//尋找場景裡面的槍身物體
M_ulletSpawnAnchor = GameObject.Find("BulletSpawnAnchor").transform;

GameObject.Find("BulletSpawnAnchor");是Unity裡面內建的一個API,可以尋找場景裡面名為BulletSpawnAnchor的物體。
由於是Teansform型別,所以要把載入的資源轉換成transform。

相關文章