ue4
文章平均质量分 82
--小智--
这个作者很懒,什么都没留下…
展开
-
ue4 IK心得
ik一般涉及到位置和旋转比如双手握枪的实现枪是由手柄驱动的,因此可以在游戏中得到枪的位置及朝向,有了枪的位置及朝向,通过枪上的socket就可以算出左右手所在的位置及其朝向。在ue4中,twoboneik通常只管ik的位置,但如果只管位置,手就不能很好的握在枪上。因此,枪上的socket应该不止决定手的位置,还要决定手的朝向。具体来说,左右手分别叫hand_l和hand_r,这样分两步来实...原创 2019-10-18 18:54:27 · 2118 阅读 · 0 评论 -
ue4基于ShooterGame实现弩
需求,实现武器弩1.实现可发射projectile的武器,类似shooterweapon_projectile2.弩击中地面(场景上的静态物体)上则箭插在地面上,如果击中可移动的刚体则箭跟着刚体一起运动,如果打到怪身上,则会跟着怪的bone一起变换(也就是说在怪的bone空间相对变换固定不变)第一条容易实现,只要从shooterweapon_projectile派生即可,主要在实现第二条。这里需要...原创 2018-06-08 14:32:56 · 867 阅读 · 0 评论 -
ue4同c#通信时的中文乱码问题
本文讨论C#同ue4进行通信,出现的中文乱码情况,其他语言类似。本文分两种情况讨论,1.C#向ue4发送string在C#发送string时,要先区分发送的字符串中是否包含中文,判断方法很简单,如下: private bool IsPureAnsi(string str) { for (int i = 0; i < str.Length;...原创 2018-06-23 17:53:03 · 1158 阅读 · 1 评论 -
vs文件编码批量转换工具
https://blog.csdn.net/xiaozhi0999/article/details/52469979上文提到了ue4中出现中文乱码问题,可通过修改文件编码格式解决,但当文件很多的时候,一个个修改文件编码比较费事,所以本人用python写了一个批量转换编码工具(gb2312转utf8),其他编码转换,只需要对代码稍作修改即可。python2.7import osde...原创 2018-06-23 17:59:46 · 9249 阅读 · 0 评论 -
ue4 FUdpSocketReceiver接收不到消息
ue4中udp接收消息端代码如下:bool FShooterUDPReceiver::Start(const int32 ThePort){ //Create Socket FIPv4Endpoint Endpoint(FIPv4Address(0,0,0,0), ThePort); //BUFFER SIZE int32 BufferSize = 2 * 1024 * 1024;...原创 2018-06-25 15:25:50 · 2326 阅读 · 1 评论 -
ue4获取所有mac地址
ue4 4.16版本中获取MAC地址的接口为FGenericPlatformMisc::GetMacAddressString此接口在windows平台的实现是调用Win32接口GetAdaptersInfo,然后返回第一个mac地址,但如果需要获取所有mac地址,此接口就不满足了,但很容易根据此接口实现一个获取所有mac地址的接口,具体代码如下:TArray<FString> FWi...原创 2018-06-19 19:14:30 · 3233 阅读 · 2 评论 -
ue4源码本地git管理
本文主要记录一下使用gitlab在局域网管理ue4源码的流程大体思路是在局域网创建gitlab仓库来管理ue4的源码,当引擎源码需要更新时,先把本地代码同步到github上最新的,然后在push到局域网的gitlab仓库,其他人通过gitlab来更新源码即可具体操作流程如下,git remote add epichttps://github.com/EpicGames/UnrealE...原创 2018-06-20 13:49:04 · 2351 阅读 · 1 评论 -
ue4 Animation Notify不触发
今天遇到一个奇怪的问题,当AI不在视野内,animation notify不触发当AI进入玩家视野,animation notify触发正常后来发现是SkeletalMeshComponent的VisibilityBasedAnimTickOption属性设置问题。当VisibilityBasedAnimTickOption设置为OnlyTickPoseWhenRendered时,就会...原创 2018-12-13 19:50:49 · 1775 阅读 · 0 评论 -
ue4 Could not find definition for module 'CryptoPP'
今天遇到一个问题,自己写的插件使用引擎源码编译正常,但用编译过的引擎编译插件,提示Could not find definition for module 'CryptoPP',这个插件确实依赖了CryptoPP,这是ue4依赖的一个第三方模块,具体路径是D:\work\UE_4.21\Engine\Source\ThirdParty\CryptoPP,发现相比引擎源码目录,少了CryptoPP....原创 2018-12-20 11:22:44 · 6067 阅读 · 0 评论 -
ue4随笔
1.好用的ue4命令log logonlineall 打开所有log类型为logonline的log的输出log logtexture off 关闭log类型为logtexture的log输出ToggleDebugCamera 可以让相机和玩家脱离Slomo0.001 可实现慢放,比如子弹事件效果2.ue4调试常用变量(1).UActorComponnet的常用调试变量...原创 2019-10-18 18:36:55 · 703 阅读 · 0 评论 -
Was only expecting C++ files to have CachedCPPEnvironments!
今天把ue4引擎从4.21.0升级到了4.21的最新版本,发现之前可以正常编译的代码编译不过了,输出错误为:Was only expecting C++ files to have CachedCPPEnvironments!找到报错的代码,如下:if (!IsCPPFile(PrerequisiteItem)){ throw new BuildException("Was on...原创 2019-02-28 15:59:31 · 639 阅读 · 0 评论 -
ue4 AimOffset和Montage
ue4如何实现不同瞄准方向的开火动画呢?不同方向的瞄准可以使用AimOffset实现,可参考官方文档。https://docs.unrealengine.com/en-us/Engine/Animation/AnimHowTo/AimOffset开火动画一般可采用Montage实现,一般会把开火动作做成设置为一个上半身的Montage,这样就可以实现站立射击,边走边射击的效果。但是...原创 2019-04-11 11:34:03 · 661 阅读 · 0 评论 -
ue4 BlueprintNativeEvent用法
BlueprintNativeEvent在ue4中是用来修饰UFUNCTION的,和BlueprintImplementableEvent有点类似,BlueprintImplementableEvent用于实现C++调蓝图(声明在C++,实现在蓝图)BlueprintNativeEvent除了实现C++调用蓝图外,同样会调用一个本地方法,本地方法为 声明的函数名+_Implementati...原创 2019-04-28 12:15:20 · 5226 阅读 · 0 评论 -
ue4 Encountered %d object(s) breaking Disregard for GC assumptions
今天遇到一个奇怪的崩溃Bug,具体的崩溃log如下:[2019.04.19-02.36.16:128][618]LogGarbage: Warning:Disregard for GC object Monatge_ON_AnimNotify/Game/_AI/BT/Task/AI_Random/W2_Stand_Relaxed_Unjam_Montage.W2_Stand_Relax...原创 2019-04-19 15:44:18 · 2339 阅读 · 0 评论 -
ue4 UParticleSystemComponent 详解
UParticleSystemComponent是ue4中用来管理粒子系统的component,用起来也很简单,一般常用的方法有virtual void Activate(bool bReset=false) override;virtual void Deactivate() override;注意这两个接口是虚函数,最早的定义是在UActorComponent中,在UActorCo...原创 2019-06-29 14:45:54 · 3989 阅读 · 0 评论 -
ue4 Actor属性同步流程
Actor属性同步明确几个概念ActorChannel(用来实现Actor同步的通道)其中有保存对应的Actor和Actor中需要同步的Component(Component是从UObject派生)先来关注函数为了方便理解,此处可以把Bunch理解为接收到的数据包,有了Bunch,首先需要知道此数据是同步给哪个Object的,ProcessBunch中的如下代码来获...原创 2019-09-20 19:34:41 · 1677 阅读 · 0 评论 -
ue4 DerivedDataCache报错
启动ue4时报错,报错堆栈如下:从堆栈可以看出是DerivedDataCache报错,从堆栈的CachedDataProbablyExists函数更可以看出是在判断cache是否存在,故而想到删除项目目录下DerivedDataCache中的Boot.ddc文件,果然问题解决了...原创 2019-09-23 15:29:35 · 802 阅读 · 0 评论 -
ue4 PlayerState跨地图传递变量
切换地图时,PlayerController默认是不会被销毁的而PlayerState默认会被销毁如果PlayerState中有变量需要跨地图传递,可以有如下两种实现方法:1.可以在PlayerController中增加相应的变量,然后在PlayerController派生类中的InitPlayerState(重载)方法中,获取该变量,再给PlayerState中对应的变量赋值2....原创 2018-04-23 18:22:20 · 4497 阅读 · 0 评论 -
ue4 Authority和server的区别
authority是权威的意思,server是服务器的意思在ue4中,有个判断switch has authority,如下图有两个选项,authority和remote此处一定要区分authority和server的区别比如,当actor设置为可复制时,一般来说authority和server都是指的服务器,因为服务器端的actor是权威的但是当actor设置为不可复制,authority指的就...原创 2018-03-23 12:11:15 · 4468 阅读 · 0 评论 -
ue4 ApplyRadialDamage
ApplyRadialDamage函数用来处理球形范围伤害,此函数大概是选取球形范围内可被伤害的物体,进行伤害处理另外,此函数还处理了遮挡伤害的问题,比如,伤害范围内包含一根柱子,假设人正好在柱子后,如果想让柱子后的人不承受伤害改怎么处理呢,先来看此函数的声明 UFUNCTION(BlueprintCallable, BlueprintAuthorityOnly, Category="Ga原创 2017-10-26 18:09:24 · 2937 阅读 · 0 评论 -
ODE编译
首先下载最新的ode,地址为 :http://ode.org/download.html(本人使用的版本是ode-0.11.1)解压,打开ode根目录下的build文件夹,里面有个premake4.exe.打开命令行,在命令行中打开至build文件夹,输入:premake4 --help,可以查看premake4的一些可选参数,此处我只需要带demo编译,于是输入 premake4原创 2010-05-24 15:54:00 · 1324 阅读 · 0 评论 -
ue4点滴
1.如何遍历地图中的PlayerStart(出生点)for (TActorIterator It(GetWorld()); It; ++It){}这样就可以实现遍历,注意TActorIterator函数的实现,可以遍历world中任意类型的actor原创 2016-03-04 20:25:14 · 1444 阅读 · 0 评论 -
ue4 rpc调用不起作用
在项目开发过程中,遇到了一个问题,在Pawn派生类的蓝图中,在Event Possessed事件处理过程中,出发一个自定义事件(记为CustomEvent),该自定义事件标记为 Multicast,但是遇到一个奇怪的问题,当地客户端登陆后,收不到CustomEvent事件,但是如果我在触发CustomEvent的时候加一个延迟,客户端就可以收到CustomEvent事件,这里很容易就联想,服务器和原创 2016-05-24 15:57:01 · 3006 阅读 · 0 评论 -
ue4 网络代码分析
ue4实现了rpc,还是比较好用的,下面简单分析一下ue4网络部分的实现。ue4种主要处理网络的类是UNetDriver, UNetDriver类中有如下两个成员UPROPERTY()class UNetConnection* ServerConnection;UPROPERTY()TArray ClientConnections;从名字就能看出Server原创 2016-05-05 21:13:48 · 4383 阅读 · 0 评论 -
ue4 服务器登陆流程
ue4 服务器 登陆流程原创 2016-05-13 11:20:06 · 5712 阅读 · 0 评论 -
ue4局域网加入流程
本文简单分析一下ue4在局域网内加入游戏的流程。ue4游戏中,会列出局域网内所有服务器的基本信息,玩家可以选择一个加入游戏。加入游戏使用udp协议,具体协议格式如下:字节1:版本号字节2:平台类型字节3-6:游戏唯一标识字节7-8:包类型字节9-16:客户端唯一标识随机数后面还可跟一些其他数据使用的协议有如下两个: DEFINE_ONLINE_DELEGAT原创 2016-05-20 19:41:04 · 4619 阅读 · 0 评论 -
ue4 FString 中文乱码问题
使用FString出现乱码,最简单的情况,FString Str = "你好";这时候就会出现乱码,解决方法是改成这样 FString Str = TEXT("你好");以上是最简单的乱码情况,本文主要讨论的是网络传输过程中出现的乱码情况。本文讲述C#同ue4进行通信,出现的中文乱码情况,其他语言类似。本文分两种情况讨论,1.C#向ue4发送string在C#发送strin原创 2016-09-08 12:35:26 · 12421 阅读 · 1 评论 -
ue4实现富文本提示
游戏中需要用到富文本提示信息,即一行提示信息文字可配置多种颜色,还可以考虑加入图片(本文只实现多颜色,扩展也比较简单)实现富文本,大体分为两步:1.实现富文本配置2.显示富文本先来看第一步,定义提示信息格式,如下所示:测试行一很明显,可以为“测试”、“行”、“一”配置不同颜色,此处使用了颜色索引,约定好一些颜色,当然也可以直接配置颜色值,想要加入图片,只要扩展属性即可原创 2016-10-10 14:53:08 · 4871 阅读 · 0 评论 -
ue4 AddLocalOffset 不起作用
遇到了在联机模式下,在客户端的mesh上调用AddLocalOffset没作用的情况,具体问题发现也有人遇到过,但没有解决方案,具体可以看下面的网页https://forums.unrealengine.com/showthread.php?70797-Character-mesh-AddLocalOffset-not-working-on-replicated-characters解原创 2016-11-03 19:36:24 · 2866 阅读 · 0 评论 -
ue4 RepNotify ReplicatedUsing 区别
在ue4种,在服务器修改了某个变量,想触发回调,有两种方式,一个是在蓝图中,一个是在C++中,但这两种用法是有区别的在蓝图中,变量标记为RepNotify,假设响应函数为 OnRep_Fun1,则OnRep_Fun1会在服务器和所有客户端调用,ue4文档原话如下:https://docs.unrealengine.com/latest/INT/Gameplay/HowTo/Networki原创 2016-04-27 12:58:47 · 7646 阅读 · 0 评论 -
ue4 SpawnActor和SpawnAIFromClass
SpawnActor函数顾名思义,创建一个Actor但如果需要创建一个Pawn呢,当然也可以用SpawnActor,但这样设置Pawn对应的Controller就比较麻烦了。正确的用法是用SpawnAIFromClass,参数之一就是Pawn对应的Class。这样创建的Pawn就等效于在地图中直接拖入Pawn。原创 2016-11-07 19:41:51 · 5631 阅读 · 0 评论 -
ue4烘焙失败
ue4中经常会遇到烘焙失败的问题,有的显而易见,有的则不那么容易被发现。这里记录一下工作中遇到的烘焙失败问题,希望在以后遇到类似的问题能作为参考。首先看下ue4官方文档对烘焙的解释内容烘焙虚幻引擎将内容资源存储为在其内部应用的特殊格式,比如贴图数据存储为PNG格式, 或者音频存储为WAV格式。但是,针对不同平台,这些内容需要转换成各种格式, 这是因为该平台使用专有的格式,不原创 2016-11-29 10:13:44 · 8163 阅读 · 0 评论 -
ue4 Development编译报错
Development选项编译报错,但检查代码并没有语法错误,而且使用Development Editor编译配置就不报错。很明显,这是由于ue4生成的中间编译文件造成的,这时候如果重新编译,肯定是可以解决问题的,但重新编译会连ue4引擎代码一起编译,时间很长。另一个解决办法就是找到这些中间文件,然后删除掉。这些中间文件的路径如下:E:\work\UnrealEngine-4.12\MyGam原创 2016-11-21 15:25:35 · 2047 阅读 · 0 评论 -
ue4打包失败
ue4打包失败,最后提示 Error Unknown Cook Failure究竟是什么原因呢,从log最开始查找error,最开始找到的比较可疑的error如下:MainFrameActions: Packaging (Windows (64-bit)): UE4Editor-Cmd: [2016.05.27-13.42.02:613][ 0]LogCook:Display: Cook...原创 2016-05-27 22:05:37 · 41637 阅读 · 3 评论 -
ShooterGame常见问题解答
1.如何在命令行中强制开始游戏UFUNCTION(exec)void ForceMatchStart();2.如何用命令结束游戏UFUNCTION(exec)void FinishMatch();原创 2016-04-18 11:17:40 · 4657 阅读 · 0 评论 -
ue4 常见问题解答
1.如何让客户端自动连接服务器MyGame.exe 127.0.0.1通过命令行参数指定服务器IP,就会自动进入游戏参考:https://docs.unrealengine.com/latest/CHN/Programming/Basics/CommandLineArguments/index.html2.如何以spectator模式启动客户端在ULocalPlayer...原创 2016-03-18 20:55:54 · 16789 阅读 · 1 评论 -
ue4碰撞检测及射线查询
ue4射线查询主要使用LineTraceSingleByChannel和LineTraceSingleByObjectType函数进行LineTraceSingleByChannel是通过Channel进行查询LineTraceSingleByObjectType通过ObjectType进行查询要理解这两个函数的区别,首先必须理解Channel和ObjectType的区别原创 2017-10-26 16:38:19 · 19393 阅读 · 0 评论 -
顶点的纹理坐标
一般纹理坐标是作为顶点的一个属性存在的,即如果包含纹理信息,纹理坐标就和顶点是一一对应的,这会引发一些思考。比如,对于一个立方体,我们一般定义8个顶点,但我们到底需要多少纹理坐标呢,如果我们用一张六个面大小的纹理去包立方体,那么我们就需要8个纹理坐标,因为此时对于多个面共享的顶点在不同的面上对应的纹理坐标都是相同的。但如果每个面都要贴不同的纹理,那么被共享的顶点在共享该顶点的面上的纹理坐标原创 2010-03-26 20:17:00 · 4049 阅读 · 0 评论