目标:了解win32工程资源是怎么更新的
VisualStudio 2017
CocosCreator 2.4.0
热更新cocoscreator官方文档
https://docs.cocos.com/creator/manual/zh/advanced-topics/assets-manager.html?h=%E7%83%AD%E6%9B%B4%E6%96%B0
https://docs.cocos.com/creator/manual/zh/advanced-topics/hot-update.html?h=%E7%83%AD%E6%9B%B4%E6%96%B0
这篇帖子只是说明,win32工程资源的更新机制,这个更新不是热更新,而是我们在creator中修改了资源例如在场景中添加了节点,修改了代码等,运行到win32上之后,如何显示我们最新修改的内容。
构建win32平台的意义,对于我来讲,主要是为了测试热更新流程
根据官网文档的说明即使是已经了解了cocoscreator的热更新机制,最终还是要实际操作一下,怎么才能快速的测试cocoscreator的热更新流程呢?
方案1 Android实践:
修改代码+资源 -> 构建android -> 打包apk -> 安装apk -> 运行
方案2 Win32实践:
修改代码+资源 -> 构建win32 -> 拷贝资源 -> 运行
方案2对比方案1,省掉了打包apk,安装apk的流程,用一个自动化的脚本拷贝资源,能节省下来不少的时间。通过查看win32平台的可写路径,可以直观的看到资源的下载情况,一目了然,非常便于调试热更新逻辑。在Android平台,观察可写路径下资源的变化情况就有些麻烦。
Step1:构建win32项目
注意不要勾选MD5 Cache
注意不要勾选MD5 Cache
注意不要勾选MD5 Cache
Step2:用VisualStudio2017打开项目
Step3:编译运行
如果出现错误
MSB8036: 找不到 Windows SDK 版本8.1报错的原因是因为visual studio里面没有安装windows 8.1 SDK插件,程序->程序和功能->在卸载或更改程序中找到visual studio 2017->右键->更改,勾选Windows 8.1 SDK
运行起来的界面
发现没有控制台输出不方便调试,找到main.cpp,将注释取消
// #define USE_WIN32_CONSOLE,打开debug控制台再次运行,就能看到控制台窗口了
Step4:更新资源
在creator中修改编辑场景,构建,在Visual Studio 2017中运行,发现资源变化了
很简单,只要把
TestUpdate240\build\jsb-default\assets这个文件夹拷贝到TestUpdate240\build\jsb-default\frameworks\runtime-src\proj.win32\Debug.win32\assets下面就可以完成资源的更新。我们手动的拷贝也是可以的,然后直接运行Debug.win32\hello_world.exe就能看到变化,那么在Visual Studio 2017中点击运行按钮Visual Studio是如何做资源更新的呢,查找发现在这里做的操作hello_world项目\右键属性\自定义生成步骤里面发现了资源更新的脚本拷贝出来看的更清晰
xcopy "$(ProjectDir)..\..\..\src" "$(OutDir)\src" /D /E /I /F /Y
xcopy "$(ProjectDir)..\..\..\assets" "$(OutDir)\assets" /D /E /I /F /Y
xcopy "$(ProjectDir)..\..\..\jsb-adapter" "$(OutDir)\jsb-adapter" /D /E /I /F /Y
copy "$(ProjectDir)..\..\..\main.js" "$(OutDir)\" /Y
copy "$(ProjectDir)..\..\..\project.json" "$(OutDir)\" /Y

结合资源一看,就了然了,一共拷贝了3个文件夹和2个文件
Step5:仿照着做个批处理来完成资源更新
用途是发布过一次win32之后,运行一次之后,就不需要再打开Visual Studio了,以后修改了资源,执行一下资源更新脚本,然后直接运行起来效果就是最新的了,创建文件命名为xxx.bat,保存到build\jsb-default目录下,然后在把proj.win32\Debug.win32\hello_world.exe创建一个快捷方式也放在xxx.bat同一个目录下
echo off
set from=D:\work\Client\build\jsb-default
set to=D:\work\Client\build\jsb-default\frameworks\runtime-src\proj.win32\Debug.win32
xcopy %from%\src %to%\src /D /E /I /F /Y
xcopy %from%\assets %to%\assets /D /E /I /F /Y
xcopy %from%\jsb-adapter %to%\jsb-adapter /D /E /I /F /Y
xcopy %from%\manifest %to%\manifest /D /E /I /F /Y
copy %from%\main.js %to% /Y
copy %from%\project.json %to% /Y
echo success
pause
Step6:看疗效
修改场景 -> 构建发布win32 -> 执行拷贝资源脚本 -> 点击快捷方式运行 -> 看到了更新
总结
通过上面的实践,发现调试程序就运行到web平台就好了,但是要是想测试热更新的话,用win32平台测,可以省去了在Android平台的打包和安装的过程,虽然还没有进入到热更新的内容,而仅仅是展示了资源的本地更新。但是win32平台具备热更新的能力。在下一篇内容中会逐步展开。通过在win32平台搞懂了热更新的细枝末节之后再在Android和IOS平台测试热更新,会起到事倍功半的效果。
希望这篇帖子能够帮助到你!!!
源于社区回馈社区!!!










