YooAsset/Docs/CodeTutorial1.md

102 lines
3.3 KiB
Markdown
Raw Normal View History

2022-03-03 18:08:32 +08:00
# 初始化
2022-10-08 16:25:36 +08:00
初始化资源系统
2022-03-03 18:08:32 +08:00
2022-10-08 16:25:36 +08:00
```c#
2022-10-18 19:27:47 +08:00
// 初始化资源系统
2022-10-08 16:25:36 +08:00
YooAssets.Initialize();
2022-10-18 19:27:47 +08:00
// 创建默认的资源包
2022-11-21 09:52:18 +08:00
var package = YooAssets.CreateAssetsPackage("DefaultPackage");
2022-10-18 19:27:47 +08:00
// 设置该资源包为默认的资源包可以使用YooAssets相关加载接口加载该资源包内容。
2022-11-21 09:52:18 +08:00
YooAssets.SetDefaultAssetsPackage(package);
2022-10-08 16:25:36 +08:00
```
资源系统的运行模式支持三种:编辑器模拟模式,单机运行模式,联机运行模式。
2022-03-03 18:08:32 +08:00
**编辑器模拟模式**
在编辑器下,不需要构建资源包,来模拟运行游戏。
注意:该模式只在编辑器下起效
````c#
private IEnumerator InitializeYooAsset()
{
2022-10-18 19:27:47 +08:00
var initParameters = new EditorSimulateModeParameters();
initParameters.SimulatePatchManifestPath = EditorSimulateModeHelper.SimulateBuild("DefaultPackage");
yield return defaultPackage.InitializeAsync(initParameters);
2022-03-03 18:08:32 +08:00
}
````
**单机运行模式**
对于不需要热更新资源的游戏,可以使用单机运行模式。
注意:该模式需要构建资源包
````c#
private IEnumerator InitializeYooAsset()
{
2022-10-18 19:27:47 +08:00
var initParameters = new OfflinePlayModeParameters();
yield return defaultPackage.InitializeAsync(initParameters);
2022-03-03 18:08:32 +08:00
}
````
**联机运行模式**
对于需要热更新资源的游戏,可以使用联机运行模式,该模式下初始化参数会很多。
注意:该模式需要构建资源包
2022-03-10 10:18:48 +08:00
- DecryptionServices : 如果资源包在构建的时候有加密需要提供实现IDecryptionServices接口的实例类。
2022-04-28 19:25:14 +08:00
2022-10-18 19:27:47 +08:00
- QueryServices内置资源查询服务接口。
2022-03-03 18:08:32 +08:00
- DefaultHostServer : 默认的资源服务器IP地址。
2022-04-28 19:25:14 +08:00
2022-03-03 18:08:32 +08:00
- FallbackHostServer : 备用的资源服务器IP地址。
````c#
private IEnumerator InitializeYooAsset()
{
2022-10-18 19:27:47 +08:00
var initParameters = new HostPlayModeParameters();
2022-10-28 10:46:35 +08:00
initParameters.QueryServices = new QueryStreamingAssetsFileServices();
2022-07-19 16:30:18 +08:00
initParameters.DefaultHostServer = "http://127.0.0.1/CDN1/Android/v1.0";
initParameters.FallbackHostServer = "http://127.0.0.1/CDN2/Android/v1.0";
2022-10-18 19:27:47 +08:00
yield return defaultPackage.InitializeAsync(initParameters);
2022-03-03 18:08:32 +08:00
}
2022-03-21 23:49:50 +08:00
2022-10-08 16:25:36 +08:00
// 内置文件查询服务类
2022-10-28 10:46:35 +08:00
private class QueryStreamingAssetsFileServices : IQueryServices
2022-10-08 16:25:36 +08:00
{
public bool QueryStreamingAssets(string fileName)
{
2022-10-28 10:46:35 +08:00
// 注意使用了BetterStreamingAssets插件使用前需要初始化该插件
2022-10-18 19:27:47 +08:00
string buildinFolderName = YooAssets.GetStreamingAssetBuildinFolderName();
return BetterStreamingAssets.FileExists($"{buildinFolderName}/{fileName}");
2022-10-08 16:25:36 +08:00
}
}
2022-03-21 23:49:50 +08:00
````
2022-11-04 11:39:16 +08:00
### 源代码解析
- 编辑器模拟模式
每次启动调用EditorSimulateModeHelper.SimulateBuild()方法都会在底层执行一次模拟构建Simulate Build
如果参与构建的资源对象数量级很大的话则会有卡顿现象,可以通过直接指定已有的清单路径来避免每次都重复执行模拟构建。
- 单机运行模式
在初始化的时候会直接读取内置清单文件StreamingAssets文件夹里的文件最后根据加载的清单去验证沙盒里缓存的文件。
- 联机运行模式
2022-11-04 13:22:31 +08:00
在初始化的时候,会优先从沙盒里加载清单,如果沙盒里不存在,则会尝试加载内置清单并将其拷贝到沙盒里。最后根据加载的清单去验证沙盒里缓存的文件。
2022-11-04 11:39:16 +08:00
**注意**:如果沙盒清单和内置清单都不存在,初始化也会被判定为成功!