test 是
unityTest 是
test 是
unityTest 是
Resloader 中的创建改为工厂模式
上一课说了:导出
这节课:加载
核心API:\
BuildPipeline.BuildAssetBundles
AssetBundle.LoadFromFile
AssetBundle.LoadAsset<T>
依赖的异步支持:
Async存在的问题,每次调用Async方法对应都会进行加载操作,造成多次加载
先创建一个Event 回调事件mOnloadedEvent
注册:
RegisterOnLoadedEvent
移除:
UnRegisterOnLoadedEvent
State 修改:
如果加载过了 事件不为空那么执行这个事件
{
get{return mState;}
protected set{
mState=value;
if(mState==ResState.Loaded)
{
if(mLoadedEvetnt!=null)mLoadedEvent.Invoke(this);
}
}
}
LoadAsync的更改取消委托函数
先完成同步加载处理
重复加载错误:
1 编辑器中加载没有卸载
2 要重新打包一下
GetAllAssetBundles()活得所有的AB名字
GetAllDependencis(bundleName) 获取依赖的名字
GetDirectDependencies(bundleName) 获取直接依赖名字
路由设计模式
路由就是URL到函数的映射
Url解析
根据不同的res生成不同的res对象
StartsWith("resources://")
AB使用的四步
1 标记
2 Build
3 加载AB
4 从AB中加载
Build
UnityEditor.BuildPipeline.BuildAssetBundles()
第一个参数 输出路径
第二个参数
第三个参数:平台
AB的使用
加载AB:AssetBundle.LoadFromFile
AB中加载:AssetBundle.LoadAsset<T>(name)
没有提供卸载prefab的功能
resload 加载
res 卸载
resmgr 记录
单一职责:
Resload:之应该负责资源加载
resmgr:负责记录
设计利器,res引用计数器:把服务类封装起来
服务类:是享元模式
9
代码复用方式:
继承,静态方法/类,服务类
加载资源使用了Find判断是否存在,在之后会优化TODO
Resources.UnloadUnusedAssets只能写在没有引用用的资源
Resources.UnloadUnusedAssets
引用记录操作解决多个资源共用卸载资源共用问题
引用一次加1