如何使用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.bat,稍等就可以生成出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在移动端上渲染方案进行分析和借鉴了,接下来我应该也会提供这方面的进一步资料。

时间: 2024-12-24 18:40:36

如何使用Xcode分析调试在真机运行的UE4 IOS版游戏的相关文章

appium 1.6.3 + ios 10.2 + xcode 8.2.1 真机运行iphone app

appium命令行启动: p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 19.0px "Andale Mono"; color: #29f914; background-color: #000000 } span.s1 { } appium --address "127.0.0.1" --session-override --pre-launch --debug-log-spacing --log "/tmp/

使用Xcode 7 beta免费真机调试iOS应用程序

http://ju.outofmemory.cn/entry/182050 使用Xcode 7 beta免费真机调试iOS应用程序 K-Res的Blog 2015-06-09 21942 阅读 xcode 今天凌晨的WWDC15虽然没有熬夜守候吧,但也还是早起第一时间翻看了twitter的相关标签,发现比较实惠的一点就是新的Xcode 7可以在不加入每年99刀的Apple Developer Program的情况下真机调试应用了(不知道是不是迫于Android那“粗犷”的真机调试方式的压力,呵呵

Xcode 7如何免费真机调试iOS应用

Xcode 7如何免费真机调试iOS应用的简单方式: 运行Xcode后,点击菜单中的Preferences…进入Accounts标签,这里选择添加Apple ID:在弹出的对话框中登入你的Apple ID,没有的话去注册一个就是了,登录成功后会看到下面这样的信息:可以看到下面显示了iOS和Mac的Free标记了,以前版本的Xcode如果你登陆的账号没有付费的话,这里会显示没有加入Apple Developer Program,就什么都做不了了.下面要做的是是生成开发证书,选中有Free的那项,然

Xcode(5.1 and last version)在OSX10.10下 真机运行失败的解决方案

最近在运行项目的时候,突然Xcode提示: XXX.app: the main executable or Info.plist must be a regular file (no symlinks, etc.) Command /usr/bin/codesign failed with exit code 1 然后就各种调试啊,各种删证书,生成CSR,各种授权都不管用.如果你也有这种情况,可以尝试一下: 将你打项目名改为 英文 !编辑scheme,编辑xcodeproj,把中文项目的各个参数

cocos2d-js 调试办法 断点调试 Android真机调试

一 使用浏览器chrome打开程序,进行调试.跟普通js程序一样. 要么自行搭建服务器,利用python脚本,或者用其他服务器程序(LAMP或XAMPP).然后用浏览器打开服务器地址. 要么直接使用cocos提供好的命令行:cocos run –p web 浏览器调试好处是,方便,对于小程序或者非native代码是非常有意义的.但部署到真机后遇到的问题,这就无法解决了,而且一些native代码也无法调试. 二 使用firefox远程调试. 因为cocos2d-js使用spidermonkey作为

安卓第一课:android studio 的环境搭建与真机运行以及遇到的问题

AS的下载: https://developer.android.com/studio/index.html AS的安装: android studio, sdk, virtual device都要安装,安装路径最好不要选在C盘 创建新项目: 创建过程不再赘述网上都有. 真机运行: 项目写好后先用USB线将安卓手机连接到电脑(注意:手机一定要打开开发者选项然后开启USB调试功能),点击运行后在检测到的设备中选择自己的手机(一般只有一项,点那个就好),运行成功后,自己的手机上会自动安装好这个软件.

第四章 Appium真机运行测试用例讲解

手机自动化测试用例虽然可以在模拟器上运行,可是模拟器毕竟和真机还是有区别的.在第二章我们讲到了模拟器上运行测试用例后,我又花了两天的时间,研究了一下真机运行测试用例.只有在真机上运行,才能真正发现出问题.期间也遇到了不少问题,不过最终还是搞定了,现在先将测试用例真机运行的方法说一下,然后再罗列我遇到的问题. 4.1 真机运行测试用例的方法 一,    打开手机的USB调试模式 不同的手机有不同的方法打开usb调试模式,可是去网上查一下你手机的调试模式打开办法(http://wenku.baidu

真机运行出现 Could not launch “XXXX”

今天真机运行的时候,编译成功,但是App一直闪退,出现下图的警告错误: 原来因为我的证书的毛病,我在点击运行的时候,Xcode里面配置的证书是发布证书和发布用的描述文件. 正常情况下,需要配置的是测试用的证书和测试描述文件 而发布证书配置的时候,想要运行程序就需要点击下面的操作: 这时候,程序才能在真机上运行.

修改项目APP名字后,在真机运行报错:The provisioning profile specified in your build settings (“haotian”) has an AppI

错误提醒:The provisioning profile specified in your build settings ("haotian") has an AppID of "com.basecom.vipose" which does not match your bundle identifier "com.baseus.iTemperature".  Xcode can resolve this issue by downloadi