一、资源包的优化
1.场景包和模型包如果重复,就会占用两份模型包的资源,可以选择删除场景包中的重复资源。 2.依赖包一般不超过三层 3.分包设计时。角色预制体需要单独打包。 4.一个AB包只能被加载一次,如果重复加载,会报错。这就需要记录加载过的包。
通过判空,避免资源包的重复加载。
protected void InstantiateBundle()
{
//通过判空,避免文件重复加载的问题
if (asset == null)
{//加载包,需要传递的参数为:包名、包所在的路径
asset = AssetBundle.LoadFromFile(Path.Combine(Application.streamingAssetsPath, bundleName));
//泛型读取对象
var asset_gob = asset.LoadAsset<GameObject>(assetName);
//Type指定类型加载
// GameObject assetobj=asset.LoadAsset(assetName,typeof(GameObject)) as GameObject;
//实例化对象
Instantiate(asset_gob);
}
}
5.在后期开发过程中,需要打的AB包太多,浪费时间,为了提升开发效率,采用不需要打包,也可以实例化模型的方式进行开发。
//不需要打包,也可以实例化出模型
[ContextMenu("InstantiateBundle")]
protected void InstantiateBundle2()
{
var assetsPaths = AssetDatabase.GetAssetPathsFromAssetBundleAndAssetName(bundleName, assetName);
var gob = UnityEditor.AssetDatabase.LoadAssetAtPath<GameObject>(assetsPaths[0]);
MonoBehaviour.Instantiate(gob);
}