如何使用Xcode分析调试在真机运行的UE4 IOS版游戏
写本文的是因为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在移动端上渲染方案进行分析和借鉴了,接下来我应该也会提供这方面的进一步资料。
如何使用Xcode分析调试在真机运行的UE4 IOS版游戏的更多相关文章
- appium 1.6.3 + ios 10.2 + xcode 8.2.1 真机运行iphone app
appium命令行启动: appium --address "127.0.0.1" --session-override --pre-launch --debug-log-spac ...
- appium 1.6.3 + ios 10.2 + xcode 8.2.1 真机运行safari
启动appium 命令: appium --address "127.0.0.1" --session-override --pre-launch --debug-log-spac ...
- Xcode 7如何免费真机调试iOS应用
Xcode 7如何免费真机调试iOS应用的简单方式: 运行Xcode后,点击菜单中的Preferences…进入Accounts标签,这里选择添加Apple ID:在弹出的对话框中登入你的Apple ...
- 使用Xcode 7 beta免费真机调试iOS应用程序
使用Xcode 7 beta免费真机调试iOS应用程序 六月 9, 2015 | K-Res 发布 今天凌晨的WWDC15虽然没有熬夜守候吧,但也还是早起第一时间翻看了twitter的相关标 ...
- XCode - 无法对iPhone真机调试的解决方法!
OSX:10.14 XCode:10.1 真机:iPhone 4S 错误很多啊,并非编译错误,编译已经成功了,但是无法安装到真机,我真不理解啊!!由于真的没有想到能够解决,有的错误没有截图,先看部分错 ...
- Xcode证书破解 iphone真机部署
Xcode证书破解 iphone真机部署 证书伪造: 先按照该教程的步骤添加证书.注意,原教程选择的是"系统"证书,这里我们用"登录"证书,切记. Xcode破 ...
- ReactNative真机运行指南
ReactNative真机运行指南 注意在iOS设备上运行React Native应用需要一个Apple Developer account并且把你的设备注册为测试设备.本向导只包含React Nat ...
- 如何在 iOS 真机运行 Appium
使用 gui 启动的 appium 1.2.2 也会有这个问题,所以你要把 deviceconsole 复制到 /Applications/Appium.app/Contents/Resources/ ...
- 二.Android手机自动化测试真机运行
手机自动化测试用例虽然可以在模拟器上运行,可是模拟器毕竟和真机还是有区别的.在搞定了模拟器上运行测试用例后,我又花了两天的时间,研究了一下真机运行测试用例.期间也遇到了不少问题,不过最终还是搞定了,现 ...
随机推荐
- Android之Tab类总结
本文主要包括以下Tab类实现方式 FragmentTabHost+Fragment实现 传统的ViewPager实现 FragmentManager+Fragment实现 ViewPager+Frag ...
- Ubuntu中root用户和user用户的相互切换
转:Ubuntu是最近很流行的一款Linux系统,因为Ubuntu默认是不启动root用户,现在介绍如何进入root的方法. (1)从user用户切换到root用户 不管是用图形模式登录Ubuntu, ...
- Linux中获取当前程序的绝对路径
代码如下: char current_absolut_path[MAX_SIZE] = ""; memset(current_absolut_path,,MAX_SIZE); // ...
- CodeIgniter报错: You must use the "set" method to update an entry
I'm using codeigniter/datamapper to develop an inviocing application and I'm getting an error that i ...
- poj 2559 单调栈 ***
给出一系列的1*h的矩形,求矩形的最大面积. 如图: 题解链接:点我 #include <iostream> #include <cstdio> using namespace ...
- loj 1251(2-sat + 输出一组可行解)
题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=26961 思路:u表示留下,~u表示离开,同理v,对于+u,-v,我 ...
- PHP文件处理类
/** * 文件读写类 * 读取时,支持跳过N个/行字符然后再读取M个/行字符 * 支持每次读取时使用回调函数 * * 示例: * $file = new File('a.txt', 'r'); * ...
- Android SQLite数据库版本升级原理解析
Android使用SQLite数据库保存数据,那数据库版本升级是怎么回事呢,这里说一下. 一.软件v1.0 安装v1.0,假设v1.0版本只有一个account表,这时走继承SQLiteOpenHel ...
- html 绘制图像
- HTTP基础04--web服务器
单台虚拟主机实现多个域名 由于虚拟服务器的功能,一台HTTP服务器可以搭建多个Web站点: 在互联网上,域名通过 DNS 服务映射到 IP 地址(域名解析)之后访问目标网站.当请求发送到服务器时,已经 ...