写本文的是因为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版游戏的更多相关文章

  1. 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 ...

  2. 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 ...

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

    Xcode 7如何免费真机调试iOS应用的简单方式: 运行Xcode后,点击菜单中的Preferences…进入Accounts标签,这里选择添加Apple ID:在弹出的对话框中登入你的Apple ...

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

    使用Xcode 7 beta免费真机调试iOS应用程序 六月 9, 2015  |   K-Res 发布   今天凌晨的WWDC15虽然没有熬夜守候吧,但也还是早起第一时间翻看了twitter的相关标 ...

  5. XCode - 无法对iPhone真机调试的解决方法!

    OSX:10.14 XCode:10.1 真机:iPhone 4S 错误很多啊,并非编译错误,编译已经成功了,但是无法安装到真机,我真不理解啊!!由于真的没有想到能够解决,有的错误没有截图,先看部分错 ...

  6. Xcode证书破解 iphone真机部署

    Xcode证书破解 iphone真机部署 证书伪造: 先按照该教程的步骤添加证书.注意,原教程选择的是"系统"证书,这里我们用"登录"证书,切记. Xcode破 ...

  7. ReactNative真机运行指南

    ReactNative真机运行指南 注意在iOS设备上运行React Native应用需要一个Apple Developer account并且把你的设备注册为测试设备.本向导只包含React Nat ...

  8. 如何在 iOS 真机运行 Appium

    使用 gui 启动的 appium 1.2.2 也会有这个问题,所以你要把 deviceconsole 复制到 /Applications/Appium.app/Contents/Resources/ ...

  9. 二.Android手机自动化测试真机运行

    手机自动化测试用例虽然可以在模拟器上运行,可是模拟器毕竟和真机还是有区别的.在搞定了模拟器上运行测试用例后,我又花了两天的时间,研究了一下真机运行测试用例.期间也遇到了不少问题,不过最终还是搞定了,现 ...

随机推荐

  1. 自定义viewgroup实现ArcMenu

    最终效果如下 实现思路 通过效果图,会有几个问题: a.动画效果如何实现 可以看出动画是从顶点外外发射的,可能有人说,那还不简单,默认元素都在定点位置,然后TraslateAnimation就好了:这 ...

  2. Unity3D入门之GUI基础以及常用GUI控件使用(2)

    1.GUI基础 (1)GUI部分是每帧擦除重绘的,只应该在OnGUI中绘制GUI,按钮:GUILayout.Button(“Hello”); 只读标签:GUILayout.Label() (2)修改控 ...

  3. oracle 10g 学习之多表查询、分组函数(6)

    笛卡尔集 l  笛卡尔集会在下面条件下产生: 省略连接条件 连接条件无效 所有表中的所有行互相连接 l  为了避免笛卡尔集, 可以在 WHERE 加入有效的连接条件. 自连接 select m.las ...

  4. jetty与hessian结合

    Hessian是由caucho提供的一个基于binary-RPC实现的远程通讯library,支持多种语言,包括c++,java,c#等,还支持flash/flex     Jetty 是一个开源的s ...

  5. [译]SQL Server 之 索引基础

    SQL Server中,索引以B-tree的结构组织数据.B-tree代表平衡树,但是SQL Server使用一种叫做B+的树. B+树不是总是保持严格的平衡的树. 首先,索引有两个主要的部件:一个页 ...

  6. SQL事务用法begin tran,commit tran和rollback tran的用法

    Sql Server 2005/2008中提供了begin tran,commit tran和rollback tran来使用事务. begin tran表示开始事务, commit tran表示提交 ...

  7. Code 128 规则解析

    1.CODE 128 标准 1.1 code 128码格式:   格式:   从左起: 空白区域,起始字符(Start),数据区域(data),校验码(check),结束字符(Stop),空白区域. ...

  8. Mesh系列文章 - 自定义Mesh

    就是在做项目的过程中,有用到三角形的,今天就写一下如何自定义三角形? 先截个图,让大家有个感性认识! //引用 using UnityEngine;        using System.Colle ...

  9. vnc使用

    使用rpm –qa vnc命令如果收到如下信息说明已经安装了vncserver, [root@localhost: ~]#rpm -qa |grep vnc gtk-vnc-python--.el5 ...

  10. 【BZOJ】1097: [POI2007]旅游景点atr(spfa+状压dp)

    http://www.lydsy.com/JudgeOnline/problem.php?id=1097 首先还是我很sb....想到了分层图想不到怎么串起来,,,以为用拓扑序搞转移,,后来感到不行. ...