Unity资源加载
编辑器内加载AssetDatabase
加载
Material mat = AssetDatabase.LoadAssetAtPath(“资源位置”,typeof(Material))as Material;
修改
mat.color = Color.white;
卸载
Resources.UnloadAsset(mat);
创建资源
AssetDatabase.CreateAsset(mat,“创建后新的地址”);
修改并保存已有Asset
EditorUtility.SetDirty(mat);此资源已改动,告诉编译器需保存
AssetDatabase.SaveAssets();保存所有资源
运行时Resources
创建文件夹,不要创建两个,不然会出错
加载
GameObject 对象名 = Resources.Load<>(“文件位置,不需要后缀”);
Object.Instantiate(对象名);(实例化)
卸载
Resources.UnloadAsset(需要卸载的文件名);不仅是此资源,还有从此资源克隆出去的所有资源都会被卸载;
两种情况:
是不是gameObject,如果是则不能通过Resources.UnloadAsset卸载的,否则会报错
若是预制体则在编辑器下是没办法的
gameobject需要用Destroy();,两种情况:
直接加载:用DestroyImmediate(名字,true);不仅是此资源,还有从此资源克隆出去的所有资源都会被卸载;
克隆出来的gameobject可以用Destroy();卸载
Resources.UnloadUnusedAssets();会判断此资源是否被引用或使用,如果没有被使用则释放(官方推荐,不过卸载过程较漫长)
释放
Assetbundle自己管理资源,运行方式是将每一个Assets打成资源包的形式,可以做资源的更新
制作AssetBundleBuildPipeline.BuildAssetBundles
在编辑器下运行,因此将其放在Editor文件夹下
using Unityeditor;
public class Build
{
[MenuItem("Publish/Buildle")]
public static void BuildBundle()
{
BuildPipeline.B
}
}