简单总结Unity使用AssetDatabase编辑器资源管理
生活随笔
收集整理的這篇文章主要介紹了
简单总结Unity使用AssetDatabase编辑器资源管理
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
最近參考了各位大神的資源,初步學習了Unity的資源管理模式,包括在編輯器管理(使用AssetDatabase)和在運行時管理(使用Resources和AssetBundle)。在此簡單總結編輯器模式下的資源管理方法,方便自己回顧。
① 加載/卸載資源
using UnityEngine; using System.Collections; #if UNITY_EDITOR using UnityEditor; // 這個文件在手機上沒有,需要使用條件編譯 #endifpublic class TestLoadAsset : MonoBehaviour {void Start () { #if UNITY_EDITOR// 加載資源Texture2D image = AssetDatabase.LoadAssetAtPath("Assets/Images/1.jpg", typeof(Texture2D)) as Texture2D;// 使用資源Debug.Log(image.name);// 卸載資源:注意,卸載方法是在Resources類中Resources.UnloadAsset(image);// 調用GC來清理垃圾,資源不是立刻就被清掉的Debug.Log(image); #endif} }需要注意的是,調用Resources.UnloadAsset()來清理資源時,只是標記該資源需要被GC回收,但不是立刻就被回收的,下一行的Debug.Log依然能看到該資源的引用不是Null。
② 創建資源
using UnityEngine; using System.Collections; #if UNITY_EDITOR using UnityEditor; // 這個文件在手機上沒有,需要使用條件編譯 #endif// 創建資源 public class TestCreateAsset : MonoBehaviour {void Start () { #if UNITY_EDITOR// 加載資源Material mat = AssetDatabase.LoadAssetAtPath("Assets/Materials/New Material.mat", typeof(Material)) as Material;// 以mat為模板創建mat2Material mat2 = Object.Instantiate<Material>(mat);// 創建資源AssetDatabase.CreateAsset(mat2, "Assets/Materials/1.mat");// 刷新編輯器,使剛創建的資源立刻被導入,才能接下來立刻使用上該資源AssetDatabase.Refresh();// 使用資源Debug.Log(mat2.name); #endif} }運行腳本后,會發現在Project視窗中多了一個剛創建的1.mat資源。
需要注意的是,無法直接創建一個資源,可以先加載一個現有的資源作為模版,或者像官方文檔中的例子那樣先New一個模板出來。
③ 修改資源
using UnityEngine; using System.Collections; #if UNITY_EDITOR using UnityEditor; // 這個文件在手機上沒有,需要使用條件編譯 #endifpublic class TestModifyAsset : MonoBehaviour {// Use this for initializationvoid Start () { #if UNITY_EDITOR// 加載資源Material mat = AssetDatabase.LoadAssetAtPath("Assets/Materials/New Material.mat", typeof(Material)) as Material;// 修改資源mat.color = Color.blue;// 通知編輯器有資源被修改了EditorUtility.SetDirty(mat);// 保存所有修改AssetDatabase.SaveAssets(); #endif} }運行腳本后,會發現New Material.mat這個材質資源的顏色被永久改為了藍色。
需要注意的是,在對資源做了任何修改后,需要通知編輯器有資源已被修改,使用 EditorUtility.SetDirty()函數來標記已被修改的資源,然后調用AssetDatabase.SaveAssets()來保存修改。
總結
以上是生活随笔為你收集整理的简单总结Unity使用AssetDatabase编辑器资源管理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 高校实验室安全应急处置VR仿真系统
- 下一篇: U盘打开总是提示格式化怎么办