加载 Unity 的资产
使用 Asset.Load(Async) 可以加载 Unity 的资产。
// path 是 Assets 开头的路径,例如 Assets/Cube.prefab, type = typeof(GameObject)
var request = Asset.Load(path, type);
// 获取 Unity 的资产。
var asset = request.asset;
// 资产不需要使用的时候可以调用 Release 释放。
request.Release();
另外,使用 Asset.InstantiateAsync 可以异步实例化一个 GameObject 到当前场景。
var request = Asset.InstantiateAsync(path, parent, worldPositionStays);
yield return request;
var gameObject = request.gameObject;
异步实例化的 GameObject 在其被销毁时,会自动释放相关资产。所以不需要主动调用 Release。
Unity 的资产主要包括如下类型的资产:
- Texture
- Sprite
- Shader
- Material
- Mesh
- AnimationClip
- AudioClip
- VideoClip
- ScriptableObject
- TextAsset
- GameObject
无论资产是在编辑器工程,下载目录、安装包还是服务器,xasset 都是统一使用目标资产在 Unity 编辑器工程下相对 Assets 目录的路径加载。 并且,加载资产时,底层会自动管理依赖关系,已经加载的内容不会重复加载。