UE4源码编译
git clone源码
运行Setup.bat下载依赖文件
运行GenerateProjectFiles.bat生成工程文件
运行UE.sln
在vs打开的工程中,最上方的解决方案配置设置为Development Editor,启动项目设置为UE4,平台WIN64,右键UE4 – Build进行编译
编译完成后按F5在vs中启动
注意
生成工程文件前可能会报错,根据报错信息可判断是否缺少相应的.NET Framework,如果缺少在vs installer中选中相应版本的vs – 修改 – 添加相应的.NET工具
Epic Game Launcher中不能识别非公版的引擎,向编译版的引擎创建的工程中添加保管库中的素材时,点击添加到工程–显示所有工程–为相应工程手动选择对应的版本号即可添加素材(因为又编译版引擎创建的工程在Launcher中显示的版本标识为“其他”,不选择相应的版本号则素材或插件都会显示不兼容)
项目打包
项目打包注意事项
启动地图
构建项目时会从游戏默认地图开始,需要点击Project Settings — Maps & Modes 设置game default map
选择目标平台
还要记得选择目标硬件(Target Hardware)
编辑器查看方式
细化平台性能控制
打开Device Profiles以后点击想要修改的设备型号后面的扳手即可对其值进行修改
Android设置和打包方式
设置方式
寻找UE4 Android Works文件夹,一般默认为C:/Program Files/Epic Games/UE_4_版本/Engine/Extras/Android Works/Win64
安装后可看到CodeWorks Manager窗口
在手机端,有时需找到usb driver才能使用,一般连数据线即可
http://developer.android.com/tools/extras/oem-usb.html
解锁设备时要开启开发者模式,开启usb调试
在设置主页找到“已连接设备”选择启用文件传输
在电脑上cmd输入adb devices,如果列出了自己的手机设备名,则准备就绪
注意:
手机开发者选项中不但需开启USB调试,还打开USB安装,允许通过USB安装应用
打包方式
为了更准确的测试,使用Play – Mobile Preview
退出游戏方式: “~”打开控制台,输入quit game
确保项目做好准备:
Settings – Project Settings – Platforms – Android
页面顶部会有警告称项目尚未对Android完成配置,点击configure now
设置文件包名称,格式为:com.MyGameCompany.MyCoolGame
并完成项目命名
如果要计划使用Google Play服务,向下滚动到Google Play Services并点击Configure Now,以将平台构建到游戏中
构建到设备:
测试并部署到自己的设备很方便,如果需要部署到其他设备,需打包
双击生成的.bat项目可以将其安装到自己的Android设备上
注意
记得在项目设置 – Android勾选将游戏数据打包至.apk中
UE4游戏框架
游戏架构的基类是GameMode,设置游戏规则,也分则处理生成玩家
Pawn
作为世界中的一个“代理”Actor,可由控制器处理 ,可接收输入并且可执行各种各样类似于玩家的动作(但不假定Pawn就是类人的)
Character
类人的Pawn,本身默认具有用于碰撞的CapsuleComponent(胶囊体组件)和CharacterMovementComponent(角色运动组件);可进行基本的拟人运动、平滑地在网格上复制运动,并具有一些动画相关的功能
控制Pawn
Controller负责管理Pawn的Actor,一般分为PlayerController和AIController,控制器可以“具有”一个Pawn并控制它
HUD
平视显示信息
GameMode
游戏的定义,包括像游戏规则和获胜条件这样的内容;仅存在于服务器上,一般在游戏过程中不会有太多数据改变,并且一定不会具有客户端需要的临时数据
GameState
包含游戏状态,包括像关联玩家的列表、分数、象棋游戏中的棋子位置或在开放世界中已经完成的任务列表
存在于服务器和所有客户端上,可以自由地进行复制来保持同步
PlayerState
表示游戏中一个参与者的状态(AI没有PlayerState),适合包含的实例数据有:玩家姓名,分数,多人在线竞技场比赛中的级别,夺旗模式游戏中玩家当前是否占领旗帜
所有玩家的PlayerStates在所有的机器上都存在,并且可以自由复制包持同步
UE C++
命名规则
派生自Actor
的类前缀为A
派生自Object
的类前缀为U
派生自Swidget
(Slate UI)的类前缀为S
Enums
的类前缀为E
Interface
类的前缀通常为I
Template
类的前缀为T
其余类的前缀均为F
布尔值用b前缀
全局元素用G前缀
输入参数用In前缀
输出参数用Out前缀
在API文档寻找类或函数
进入UE4文档 –> Unreal Engine API Reference –> Contents
Contents下面点击All classes或者All Functions查看所有的类和函数
防止头文件被编译多次的两种方法
(1)
1 |
|
(2)
1 |
|
UCLASS()
UCLASS 宏(在头文件)可用于标记从 UObject
派生的类,使 UObject 处理系统识别到它们
GENERATED_BODY 宏不获取参数,但会对类进行设置,以支持引擎要求的基础结构。所有 UCLASS 均有此要求
UPROPERTY()
为将变量公开到虚幻引擎,需使其成为 UPROPERTY。利用此操作,可在启动游戏或加载保存的关卡时保留变量的值。带有空括号的 UPROPERTY
标记,将被添加到受其它影响的变量正上方
UPROPERTY
支持改变虚幻引擎使用变量方式的参数。将变量设为可编辑,可添加 EditAnywhere
参数
1 |
|
然后该变量的修改便可在Details(细节面板)中进行
UFUNCTION()
UFUNCTION()宏把C++函数对反射系统公开,BlueprintCallable选项将对其蓝图虚拟机公开
BlueprintCallable:该函数可以在蓝图或关卡蓝图图表中执行
BlueprintImplementableEvent:此函数可以在蓝图或关卡蓝图图表内进行重载
BlueprintNativeEvent:此函数将由蓝图进行重载,但同时也包含native类的执行。提供一个名称为[FunctionName]_Implementation的函数本体而非[FunctionName];自动生成的代码将包含转换程序,此程序在需要时会调用实施方式