UE4 C++与蓝图交互】的更多相关文章

一.C++调用蓝图的函数 本来应该有一个很好的示例,但一下却忘了适用于哪些地方,只有简单写一个步骤了. 1.新建一个C++类继承Actor,名称随意,我这里继承了一个SplineMesh,一样de,并定义一个函数表示在蓝图中可重载(同时这个函数在C++中不必实现) // Fill out your copyright notice in the Description page of Project Settings. #pragma once #include "Engine/SplineMe…
1.Unreal 引擎提供了两种创建新 Gameplay 元素的方法:C++ 和 蓝图视觉脚本. 通过 C++,程序员构建基础游戏系统:设计师可以基于此系统为场景 / 游戏创建自定义的游戏玩法. 这种情况下,C++ 程序员在他们喜欢的 IDE(通常是 Microsoft Visual Studio 或 Apple Xcode)中工作,设计师则在 Unreal 编辑器的蓝图编辑器中工作. 2.Gameplay API 和 框架类 在这两个系统中都是可用的.它们可以单独使用,但只有当它们结合使用时,…
不得不说,虚幻的蓝图系统还是非常方便强大的,大大的提高了开发效率.蓝图是一个很成熟的系统,也就有很多隐藏的小技巧,这些技巧谈不上多高深,却可以使人们在使用蓝图时更加得心应手,更加喜爱这个“可视化编程“. 发现一个更黑科技的技巧…见动图 直接把变量拉到节点上,直接生成函数参数啊,类型自动匹配,名字自动匹配!! 按住某个按键,鼠标左键点击蓝图,会在相应地方生成对应的节点. 比如,A对应Add节点,B对应Branch节点,S对应Sequence节点,F对应Foreach节点等等.(下图示例Branch…
用BlueprintImplementableEvent标明的函数在C++代码中不需要有方法体,方法体在蓝图中实现. 用法: 1,现在C++头文件中定义函数名 UFUNCTION(BlueprintImplementableEvent) void OnDepleted(); 2,在蓝图中Add Event,找到对应的函数名,创建后即可实现具体逻辑 3,最后可以在自己的C++代码中调用该方法,这样就会自动调用蓝图函数 void MyActor::OnPressed() { OnDepleted()…
.h /*确认密码输入框*/ UPROPERTY() UEditableTextBox* EditableTextBoxRePassword; .cpp EditableTextBoxPassword = Cast<UEditableTextBox>(GetWidgetFromName(TEXT("EditableTextBox_Password"))); 注册按钮点击事件 /*注册按钮点击事件*/ //ButtonRegister->OnClicked.AddDyn…
回顾   学习UE4已有近2周的时间,跟着数天学院"UE4游戏开发"课程的学习,已经完成了UE4蓝图方面比较基础性的学习.通过UE4蓝图的开发,我实现了类似CS的单人版射击游戏,效果如下视频:   不得不说UE4蓝图功能的强大,无需写一句代码,就能实现一个基本的游戏玩法.并且使用门槛极低,只要熟悉蓝图的API,通过"拖拖,连连"就能完成游戏玩法的开发,对游戏策划(设计师)及其友好,与C++相比,生产效率极高. 多武器系统   目前的游戏设定是开场后,角色身上就自动装…
先大量使用蓝图制作项目,后续再用C++把复杂的蓝图重写一遍,用C++代码按照蓝图依葫芦画瓢就可以了,很简单,但需要遵守一些原则: 第一种方法:使用继承 一.创建一个C++类作为蓝图的父类(C++类继承蓝图一样的父类),在UE4中修改蓝图的父类. 二.C++类中的方法.成员变量与蓝图一一对应,并且方法和成员变量名称不能与蓝图的重复. 三.A蓝图不能直接使用B蓝图的变量,A蓝图把要公开的变量封装在函数内返回,并且只返回UE4自带的基础变量类型,不能返回自定义类型,以方便C++重写时返回C++中的成员…
目录 蓝图 蓝图命名规范 蓝图优化 暴露C++至蓝图 暴露C++类 暴露C++属性 暴露C++函数 暴露C++结构体/枚举 暴露C++接口 蓝图和C++的结合方案 使用继承重写蓝图 使用组合重写蓝图 方案比较 参考 蓝图 大家都知道,蓝图是UE4提供的极其容易上手的一种可视化脚本,更具体的就不说了. 纯靠蓝图搭建的UE4游戏是存在的,但是这类游戏往往优化很差(除非游戏玩法本身的性能需求不高).更合适的流程往往需要程序员编写C++代码创建一些蓝图可用元素,而设计师再通过蓝图快速搭建游戏. 蓝图命名…
H UFUNCTION(BlueprintNativeEvent) void EventName(); virtual void EventName_Implementation(); EventName事件发生时会调用这个函数 CPP void ClassName::EventName_Implementation() 这个宏是UE4的强制内联函数,用于优化,返回Mesh的指针给Pickup FORCEINLINE class UStaticMeshComponent *GetMesh() c…
篇写的是关于UE4的C++方面的小技巧: 1.在构造函数里 //构建组件 RootComponent = CreateDefaultSubobject<USceneComponent>(TEXT("RootComponent")); Camera = CreateDefaultSubobject<UCameraComponent>(TEXT("Camera")); //把组件放到其它组件下 VRCamera->SetupAttachme…
转自:http://blog.ch-wind.com/ue4-event-overview/ 事件机制是实现游戏内逻辑的重要部分,在开始进行游戏逻辑的设计和实现之前,对UE4的事件机制进行理解是非常必要的.于是在这里对UE4的事件相关内容全部整理一下. 当前使用的UE版本是4.6.0. UE4的内置事件 – Event Level Reset 这个事件如其名称,只存在于Level Blueprint.只能在服务端运行. 事件发出在关卡被重置时,例如玩家死亡后地图没有重新载入而是重置的情况. – …
概念 定义 UE4中的delegate(委托)常用于解耦不同对象之间的关联:委托的触发者不与监听者有直接关联,两者通过委托对象间接地建立联系. 监听者通过将响应函数绑定到委托上,使得委托触发时立即收到通知,并进行相关逻辑处理. 委托,又称代理,本质是一个特殊类的对象,它内部可以储存(一个或多个)函数指针.调用参数和返回值. 蓝图示例 声明委托 委托签名声明可存在于全局范围内.命名空间内.甚至类声明内.此类声明可能不在于函数体内 可以是返回一个值的函数. 最多4个"载荷"变量. 最多8个…
一般人都会在自己定义的函数后面添加注释,Ue4会在蓝图编辑器中显示这些注释,这是一个相当棒的设定. 但是如果这些注释是中文的话,在蓝图编辑器中就会显示乱码. 如何解决呢? 只需要把你的文件用UTF-8保存就可以了. 步骤: 文件-高级保存选项.选择Unicode(UTF-8带签名)-代码页65001. 当然在之前最好你先备份一下代码.…
一个月前,想开始看下UE4的源码,刚开始以为有Ogre1.9与Ogre2.1源码的基础 ,应该还容易理解,把源码下起后,发现我还是想的太简单了,UE4的代码量对比Ogre应该多了一个量级,毕竟Ogre只是一个渲染引擎,而UE4包含渲染,AI,网络,编辑器等等,所以要理解UE4的源码,应该带着目地去看,这样容易理解. 在看UE4提供的ContentExamples例子中,一个树生长的例子感觉不错,与之有关的Spline与SplineMesh组件代码比较独立也很容易理解,刚好拿来移植到Unity5中…
Pitch是围绕Y轴旋转,也叫做俯仰角. Yaw是围绕Z轴旋转,也叫偏航角. Roll是围绕X轴旋转,也叫翻滚角. UE4里,蓝图中的rotation的三个依次为roll,pitch,yaw.C++中FRotator里是pitch,yaw,roll.…
原文地址:http://demo.netfoucs.com/u011707076/article/details/44036839 前言 寒假回家到现在已经有十多天了,这些天回家不是睡就是吃....哎╮(╯▽╰)╭,今天早上一觉醒来,突然得知,UE4免费了,这绝对是个好消息,前不久我还在纠结怎么申请校园账号呢o(╯□╰)o.迫不及待打开电脑下载了UE引擎的一个类似管理的客户端,在里面最醒目的一栏,看到一个令人哭笑不得的导航,如下图: EPIC这是要逆天的节奏吗?不过不管他了,接下来,我们便一同学…
蓝图间通信是一个复杂关卡能否正常运行的关键,笔者在这里提供几种蓝图类之间的信息交互方法,希望能对读者有所帮助. 1.类引用 这是最直接的一种蓝图类之间的信息交互方式.首先在Editor中创建2个Actor蓝图类,分别命名为TargetActor和ControllerActor,双击打开TargetActor编辑器,将组件窗口中的DefaultSceneRoot替换成Cube,并设置成Movable,编译后保存退出,然后打开ControllerActor,将组件窗口中的DefaultSceneRo…
认识UE4蓝图中颜色与变量类型: UE4中各个颜色对应着不同的变量,连接点和连线的颜色都在表示此处是什么类型的变量.对于初学者来说一开始看到那么多连接点, 可能会很茫然,搞不清还怎么连,如果知道了颜色对应的变量类型再去找相应的模块进行连接,效率要高很多. 这也是开始蓝图编程的第一步. 蓝图中的白线: 逻辑白线:逻辑顺序线,如果没有分支,就只能一个接一个地串联起来,中间不能断了.(目前只发现只有用逻辑白线连接的模块上可以打断点调试) 白线的开始通常是一个Event引出(如上图中的AnimNotif…
这个月勉勉强强才写了一篇,都快月底了,都还没有写第二篇博客的冲动,证明这个月确实收获甚少,有点状态不佳,懒毒入骨啊.刚刚看了这个月其实已经写了三篇,然而事实是这博客还有另外一个人也在更新文章,博主并没有人格分裂,呵呵,好冷... 最近迷迷糊糊地在用UE4写一些功能,本来也没在意一个简单的枚举变量有多麻烦,然后自己确实也因为这个东西打断一点工作时间. 如果只是在C++中使用的话,都还没什么问题,跟平常的定义一样就行,如果要在蓝图中使用的话,需要用UPROPERTY标记他可在蓝图中编辑调用,然后,他…
课时1:案例演示 05:12 课时2:工程准备 07:35 (把一个项目从一个工程移动到另一个工程) 1.新建一个空白工程,不包含初学者内容 2.选择我们要复制的工程,按右键,如下图: 复制到新工程的content文件夹 课时3:蓝图类 08:07 课时4:蓝图类的编译和保存 05:44 课时5:开始游戏 08:14 课时6:动画蓝图 07:47 课时7:向前移动 06:49 课时8:向量 05:03 课时9:用向量表示方向 09:23 课时10:自由移动 04:22 课时11:roll·pit…
版本:4.12 1.进行如下设置 2.将项目打包出来(任意一平台都行,本文以Windows为例) 3.打包完成后才会在原项目工程中生成蓝图转换成c++的代码 4.如图路径(转换后的代码路径较深所以一步一步说明) C_SourceCode是我建立UE4的项目名 Intermediate文件夹内是转化后的代码 WindowsNoEditor 是本文之前说的打包的是windows平台,所以此平台打包后的转换代码在此文件夹下 NativizedAssets本地化资源,直接点击进去就行,代码就在其文件的S…
UE4.15没有提供蓝图UDP的组件,可以在网上找到一个ID叫Rama写的源代码,我把它封装成插件了(MyUdpPlugin),方便在各个UE4版本工程中使用UDP通信. 使用方式: 1.在自己的工程根目录下新建一个Plugins文件夹,将MyUdpPlugin拷贝进去 2.一般情况下需要重新编译一下插件,最终你会得到一个插件的dll 3.新建一个蓝图类.接收UDP信息就选择MyUDPReceiver,发送UDP就选择MyUDPSender,这两个类都继承自Actor 4.将新建的蓝图类拖拽一个…
创建关卡脚本 蓝图具有和虚幻3中Kismet一样的功能,每个关卡都由自己的蓝图,他可以: 引用和操控actors 控制使用Matinee的过场 管理关卡流,存档点以及其他关卡相关的系统 和关卡中的类蓝图(Class Blueprint)交互,从而读写变量和触发事件 创建交互式游戏对象 Make interactive assets such as doors, switches, collectible items and destructible scenery. 使用CONSTRUCTION…
1 建立3d ui 新建一个Actor蓝图,上面加上Widget控件,widget Class选择任意ui蓝图,把这个actor蓝图放到场景任意合适位置 2 3dui交互 在合适位置(比如主角的相机上,武器上)添加Widget Interaction控件,这个用来触发3dUI交互 调试时可以把Widget Interaction上的show debug打开,可以看到从widget Interaction射出的射线 补充说明Widget Interaction可以有多个,也可以绑在任意物体上(不必…
在UE4中,有两种方式创建ui,一种是使用slate的方式,一种是UMG,UMG是slate的封装,是一个可视化的ui编辑器.slate则是纯c++方式(之前实验过一次slate创建页面,代码相当麻烦),所以准备采用UMG做几个页面. 在.Build.cs文件中将以下行: PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", &qu…
做C++项目的时候遇到了一个小地图的问题,从网上找了个蓝图的思路,转载一下. 原文:https://www.engineworld.cn/thread-3835-1-1.html 本文使用ue4提供的SceneCapture2D(场景照相机)来创造一个游戏中俯瞰的实时小地图,并将其固定显示在界面左上角. 此例子仅说明正交相机和UI用户界面的基本使用. 首选,我们需要拖入一个SceneCapture2D组件到场景, 此相机默认使用的是透视投影,我们需要在它的属性中设置投影模式为正交投影,即设置属性…
8. 寻路网格体和Gameplay调试器 为了及时识别出AI系统中的导航问题,UE4提供了一个工具用来解决这类问题,它叫Gameplay调试器.打开项目设置,在左侧找到"引擎",然后找到"Gameplay debugger".查看"输入分段",检查激活键有没有绑定.记住绑定的键盘键,然后播放游戏,通过快捷键打开"Gameplay debugger",然后看向AI所在的位置,在屏幕上会出现许多信息并在不断更新.按"sh…
一般先跳转到一个临时的关卡,然后异步加载目标关卡,同时展示Loading界面 对于含有流关卡的目标关卡,可以先载入子关卡 蓝图异步加载 无进度条 C++ 异步加载关卡 LoadPackageAsync bool bIsLoaded; UPROPERTY() FString LoadPackagePath; // 用于加载完成的回调 DECLARE_DYNAMIC_DELEGATE(FOnAsyncLoadFinished); UFUNCTION(BlueprintCallable) void M…
一 往关卡中放置物体 二 Static Mesh 和 BSP 从今天开始我们要建立一个类似CF游戏的场景,不写一句代码,纯蓝图实现. 三 英语学习 今天早上开会,经理说了一件让我震惊的事情,她说最近大Boss在一直在上海,在办公司要说英语,开会也用英语,不然被抓到有被开除的危险,我的英语很不好,心累,所以要抓紧时间学习英语,一下是今天的学习总结: 感谢您的阅读,若有不足之处,欢迎指教,共同学习.共同进步. 博主网址:http://www.cnblogs.com/majianchao/ 如您喜欢,…
Scene Component是蓝图类中一个不怎么常用的分类(特别是对于新手而言),主要是其实现的功能可以在Actor类中用相同的方法实现,使其作用显得有点多余. 笔者在使用过这个类之后发现其作用更相当于一个接口,可以被其他蓝图类调用,且操作方法简单,实现后效果明显,在这里介绍一个简单的应用便于读者理解和使用这个蓝图类. 准备工作 首先是创建一个Scene Component蓝图类,命名为HoverComponent. 接下来是编写蓝图逻辑之前的工作:创建两个Float变量,命名为TraceLe…