博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
如何使用Xcode分析调试在真机运行的UE4 IOS版游戏
阅读量:5238 次
发布时间:2019-06-14

本文共 1656 字,大约阅读时间需要 5 分钟。

写本文的是因为UE4 官方文档虽然也有,但主要讲的是是用UE4Editor把游戏打成一个IPA包的形式发布的方法

而对于想通过Xcode分析UE4的渲染流程来学习或优化的朋友,那官方文档的资料还是不够的,这里是总结一下在Mac上用Xcode对UE4 ios app做Analyze的教程。

要在Xcode里调试或分析,直接下载编辑器是不行的,首先还是要有UE4的源代码,从官方或民间下载都可以,一般是1个UnrealEngine包,2个Required包,先解压UnrealEngine,再把Required里的内容分别拖到解压后的UnrealEngine文件夹里,Required1和Required2因为有同名文件夹,记得选择keep newer 或 merge(OSX的版本不同),就可以把3个包的内容都拷贝好。然后运行 GeneragteProjectFiles.command,稍等就可以生成出UE4.xcodeproj的Xcode工程了。

用Xcode打开工程,直接Build UE4Editor,这个过程根据你Mac设备性能的不同可以要10~30分钟

这个时候你还需要一个进行测试的工程文件,进入MarketPlace,下载这个比较经典的Sun Temple工程好了

进入这个页面,下载完成后,就可以创建工程了

如果是编辑器发布的方式,这里打开就可以按官方教材继续修改打包发布了,但如果需要代码做调试和分析的话, 这里可以跳过

回到我们UE4源代码的Xcode工程,运行编辑器,然后在工程创建页面,会看到在MarketPlace创建的工程文件,选择SunTemple工程进入

如果编辑器和工程版本不一样,可能需要进行版本转化,建议小版本号,如4.5.0~4.5.x可以跳过或再开一份拷贝。

这里还需要注意一点的是,如图下图,你编译出来的UE4Game。在一些版本里可能会是UE4Ggame-IOS-Debug一类的名字,UE4在Xcode或编辑器里打包时调用的是UE4Ggame,否则工程会打包失败
所以可以先在编辑器里打包试试,如果提示找不到UE4Game再进到这个目录改名。

 

在官方教程里,提到可以在生成的工程文件.uproject上右键选择Generate Xcode Project,但这样生成的Xcode工程是不带任何引擎源码的,无法起到调试作用

正确的方法,应该是先进入编辑器,在File->Package Project的页面里,选择Packaging Setting.

这里可以选择是渲染器使用的图形API是GLES2还是Metal

保存,然后选择Refresh Xcode Project,这样就会生成带shader,ue4引擎源码的Xcode项目工程文件了。

 

从工程目录进入SunTemple工程,如图,选择UE4Game-iOS,并在真机上运行,UE4默认的运行机制,其实就是一个统一的UE4Game的前端+资源包的形式

为了能在Xcode上捕获GPU信息,需要进入UE4Game的Scheme里进行设置

这因为UE4同时支持GLES和Metal的,Xcode无法判断你使用的究竟是哪个API,所以在GPU Frame Capture里必须强制为GLES,才可以成功进行分析。

在真机上运行UE4Game,然后点击到Show the Debug Navigator的图标,就可以对当前运行UE4 app进行GPU分析了 

点击Analyze按钮后稍等片刻,Xcode会捕获Frame的整个绘制流程,并可通过滑动滑竿来浏览。

同时也可以查看绘制调用部分使用的shader代码,并支持动态修改调试

而Debug的方式则和平时调试一样,在指定的代码部分放置断点就可以了。解决了这个问题,就可以针对UE4在移动端上渲染方案进行分析和借鉴了,接下来我应该也会提供这方面的进一步资料。

 

转载于:https://www.cnblogs.com/TracePlus/p/4090227.html

你可能感兴趣的文章
[置顶] Android入门教程------Android工程目录结构介绍
查看>>
ev||event 和event||ev
查看>>
linux-log-files/
查看>>
JAVA环境变量的配置
查看>>
【转】Linux下tcp连接断开后不释放的解决办法
查看>>
[T-ARA][20090729]
查看>>
Webpack快速入门 (v3.7.1)
查看>>
Vue控制路由滚动行为
查看>>
MyBatis的动态SQL详解
查看>>
HTTP的应用httpclient 和线程
查看>>
pytest七:assert断言
查看>>
linux shell 判断空字符串的几种方法!
查看>>
C语言博客作业--函数
查看>>
PHP截取中英文混合字符
查看>>
HTA - OnKeyDown
查看>>
【洛谷P1816 忠诚】线段树
查看>>
Sa身份登陆SQL SERVER失败的解决方案
查看>>
iOS SQLite 读书笔记
查看>>
第四次作业
查看>>
函数对象 函数
查看>>