Unreal 怎么实现java actor模式实现的互动 虚幻4

扫一扫,访问微社区
后使用快捷导航没有帐号?
签到成功!您今天第{todayrank}个签到,签到排名竞争激烈,记得每天都来签到哦!已连续签到:{constant}天,累计签到:{days}天
当前位置: &
查看: 2952|回复: 59
虚幻4简单Demo项目制作
本帖为抢楼帖,欢迎抢楼!&
7排名<font color="#FF昨日变化主题帖子积分
蛮牛币6294
在线时间649 小时
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
才可以下载或查看,没有帐号?
今天简单完善了一下上次制作的UMG与C++联动的小Demo,具体代码实现部分可以参考一下我上次发的文章,在虚幻中国上的链接地址如下:UMG与C++联动,不过在蛮牛上我也已经搬运过来了。。。这次主要完成部分是简单用了一个数据结构TMap&ButtonInfo, TSet&ButtonInfo&& UIButtonMap 通过Map存储了每个按钮以及按钮对应的下一层级的所有按钮,将UI层级的关系约束划分了一下。本质上这个毕竟是Demo,所以很多地方还不完善。所以有需求的话还需要将很多细化解决。
简单实现效果
因为UI方面我仅仅实现了一下功能,就不追求美观了。
umg1.png (897.08 KB, 下载次数: 1)
22:09 上传
umg2.jpg (144.34 KB, 下载次数: 0)
22:09 上传
umg3.jpg (147.51 KB, 下载次数: 0)
22:09 上传
umg4.png (27.98 KB, 下载次数: 0)
22:09 上传
umg5.png (258.44 KB, 下载次数: 2)
22:09 上传
这上面蓝图的部分主要是做UI显示内容以及后期可扩展的动画效果的实现,主要是通过蓝图调用我们C++所实现的一些函数方法,比如这个UI层级控制主要调用C++两个接口,一个是点击按钮时触发的事件,触发的事件我们如果只是UI层面的样式改动那么只需要在蓝图中制作,而需要对游戏业务逻辑层面的内容修改则需要写在我们C++提供的接口函数中。另一个就是返回上一层级,那么我们可以看到通过调用C++的一个返回上一层级函数就可以简单返回上一层级,这样体现出了虚幻中通过底层C++来处理一些复杂的业务逻辑,再通过蓝图简单调用这些C++所提供的API函数来实现一些功能的优势,让对代码不是很熟悉的人也可以迅速上手完成一些简单的业务逻辑通过蓝图来实现。
关于该层级功能制作本身来说是非常简单的,不过还是简单给大家说一下如何实现好了,关于具体在虚幻4上如何处理各种遇到的小问题可以先看看我写的上一篇文章,在此我就不多赘述。
简单分析虚幻4游戏项目的框架:虚幻4在整个游戏项目的制作上关于整个项目结构都有一套较为固定的框架,比如&&GameMode&&PlayerController,CharacterController等等,我们自己的游戏项目是需要重新写关于自己的一套框架,例如:MyGameMode如此,并且继承于GameMode类,等等。关于这一部分内容较多,我最近也正在研究虚幻4官方提供的很多Demo,届时再给大家分享一下研究demo源码的一些心得把。那么我们回归正题,这样一个简单的UMG的demo,我们也需要用到并实现一些简单的游戏框架。下面是我的结构目录
umg6.png (27.34 KB, 下载次数: 0)
22:18 上传
需要简单说明一下:
C++项目我们一般来说头文件和源文件会分开放在Head和Source两个文件夹下面,虚幻项目创建的时候尤其要注意把头文件全部放在Public文件夹下面,可以作为外部引用,源文件实现程序代码部分放在private文件夹下面,主要是为了清晰划分整个目录结构,官方demo也都是如此,比较有条理性。
从最下方的程序文件看,.uproject& && &
通过看所有程序我们大概可以了解到主要是记录了当前虚幻项目的一些基本信息,同时有一些外部引用模块,比如:UMG,这个模块我们为了可以在代码中对UMG的一些属性进行操控,所以必须要在这里引用并生成一遍。
umg7.png (59.36 KB, 下载次数: 1)
22:21 上传
其余的几个.cs文件也主要是用于引用各个部分模块的,我应该上一篇文章中提到了如果要做UMG的话需要引用哪些模块进入,在此就不逐一分析。
关键部分是其余几个部分代码
UMGRender.h
这个是以我们项目名称命名的,也是整个程序的入口
umg17.jpg (69.12 KB, 下载次数: 1)
22:32 上传
可以看到我们需要引用的虚幻引擎本身自带的类库都可以在这个地方进行引用
这个是简单写了一个结构存放UI按钮的一些基本属性,因为比较粗糙,大家不必在意。
umg9.png (473.59 KB, 下载次数: 0)
22:30 上传
MyCharacter.h
这个就是我们玩家控制功能实现部分了,本质上非常简单,因为基本API都是封装好的,唯一需要的是与一些按键进行绑定
umg12.png (535.04 KB, 下载次数: 0)
22:30 上传
umg13.png (483.31 KB, 下载次数: 1)
22:30 上传
umg14.jpg (100.79 KB, 下载次数: 5)
22:30 上传
umg15.png (344.49 KB, 下载次数: 2)
22:30 上传
MyPlayerController.h
这个玩家控制器部分并不是对玩家前后左右移动进行操作,而是对玩家的一些属性或者是与外部物体交互的简单逻辑功能进行交互的部分。就与上面的Character区分开了。
umg10.png (618.35 KB, 下载次数: 0)
22:30 上传
MyGameMode.h
对游戏模式控制,这个项目里面我只是添加了并没有太多的实际功能书写,但是每个项目应有一个独立的游戏模式类是必须的。
umg11.png (513.36 KB, 下载次数: 0)
22:30 上传
InventoryUserWidget.h
这个就是我自己创建的主要对UI层级进行核心划分并实现功能的类
umg16.png (607.58 KB, 下载次数: 1)
22:31 上传
从上面简单对程序目录结构分析可以看出来,虚幻还是在整个游戏框架性要求很高的,我列举出来的这个小项目只是虚幻框架的一部分,凡是带My的类都是需要继承自虚幻引擎本身的类的,而这些类都有许多自己特殊的一些api和应用的地方,本文章不多介绍,以后会专门对虚幻整个游戏项目制作的框架进行分析的。
有关于cpp文件中代码实现,我最后会给大家分享出来源码的,因为现在我还没有搞清楚虚幻4的一个项目东西并不是很多,但是整个工程项目却异常庞大的问题,所以整个工程源码我就先不发了,提供一下源代码先。
2. 划分UI层级
InventoryUserWidget.cpp
[C++] 纯文本查看 复制代码//-----------------------------------------------【Function Indroduction】----------------------------------------------
UInventoryUserWidget:
UMG Inventory UI Model
Language:
IDE:VS2013
Created by RaymondMG
//---------------------------------------------------------------------------------------------------------------------
#include &UMGRender.h&
#include &InventoryUserWidget.h&
//初始化UI数据
注:此处建议扩展为从配置文件/XML/JSON来进行读取初始化UI数据操作
void UInventoryUserWidget::init()
TSet&ButtonInfo*& biS
//------------------------建立第一层级按钮
//开始游戏
ButtonInfo* startGame = new ButtonInfo();
startGame-&num = &startgame&;
startGame-&name = &StartGame&;
startGame-&level = 1;
//游戏设置
ButtonInfo* gameSetting = new ButtonInfo();
gameSetting-&num = &gamesetting&;
gameSetting-&name = &GameSetting&;
gameSetting-&level = 1;
//结束游戏
ButtonInfo* endGame = new ButtonInfo();
endGame-&num = &endgame&;
endGame-&name = &EndGame&;
endGame-&level = 1;
//设置当前层级
CurrentUILayer = 1;
CurrentUILayerArrayName.Empty();
CurrentUILayerArrayName.Add(startGame-&name);
CurrentUILayerArrayName.Add(gameSetting-&name);
CurrentUILayerArrayName.Add(endGame-&name);
//-----------------------游戏设置下第二层级按钮
//音乐设置
ButtonInfo* gameMusicSetting = new ButtonInfo();
gameMusicSetting-&num = &gamemusicsetting&;
gameMusicSetting-&name = &GameMusicSetting&;
gameMusicSetting-&level = 2;
gameMusicSetting-&isChild =
gameMusicSetting-&parentNum = &gamesetting&;
//UI样式设置
ButtonInfo* gameUIStyleSetting = new ButtonInfo();
gameUIStyleSetting-&num = &gameuistylesetting&;
gameUIStyleSetting-&name = &GameUIStyleSetting&;
gameUIStyleSetting-&level = 2;
gameUIStyleSetting-&isChild =
gameUIStyleSetting-&parentNum = &gamesetting&;
//-----------------------游戏音乐设置下第三层级按钮
//音量大小设置
ButtonInfo* gameMusicVolumeSetting = new ButtonInfo();
gameMusicVolumeSetting-&num = &gamemusicvolumesetting&;
gameMusicVolumeSetting-&name = &GameMusicVolumeSetting&;
gameMusicVolumeSetting-&level = 3;
gameMusicVolumeSetting-&isChild =
gameMusicVolumeSetting-&parentNum = &gamemusicsetting&;
//背景音乐设置
ButtonInfo* gameMusicBackGroundMusicSetting = new ButtonInfo();
gameMusicBackGroundMusicSetting-&num = &gamemusicbackgroundmusicsetting&;
gameMusicBackGroundMusicSetting-&name = &GameMusicBackGroundMusicSetting&;
gameMusicBackGroundMusicSetting-&level = 3;
gameMusicBackGroundMusicSetting-&isChild =
gameMusicBackGroundMusicSetting-&parentNum = &gamemusicsetting&;
//------------添加第一层级对应按钮
//清空下一层级按钮
biSet.Empty();
UIButtonMap.Add(startGame,biSet);
biSet.Empty();
biSet.Add(gameMusicSetting);
biSet.Add(gameUIStyleSetting);
//游戏设置
UIButtonMap.Add(gameSetting, biSet);
biSet.Empty();
UIButtonMap.Add(endGame, biSet);
//------------添加第二层级对应按钮
biSet.Empty();
biSet.Add(gameMusicVolumeSetting);
biSet.Add(gameMusicBackGroundMusicSetting);
UIButtonMap.Add(gameMusicSetting, biSet);
biSet.Empty();
UIButtonMap.Add(gameUIStyleSetting, biSet);
//------------添加第三层级对应按钮
biSet.Empty();
UIButtonMap.Add(gameMusicVolumeSetting, biSet);
biSet.Empty();
UIButtonMap.Add(gameMusicBackGroundMusicSetting, biSet);
biSet.Empty();
//返回上一层级
bool UInventoryUserWidget::MenuBackToFormalLevel()
//第一层级无上层
if (CurrentUILayer == 1)
--CurrentUIL
CurrentUILayerArrayName.Empty();
for (auto it = UIButtonMap.CreateIterator(); ++it)
if (it-&Key-&level == CurrentUILayer)
//是当前层级的按钮
CurrentUILayerArrayName.Add(it-&Key-&name);
//菜单按钮事件触发
bool UInventoryUserWidget::MenuButtonEventHandler(FString btnName)
for (auto it = UIButtonMap.CreateIterator(); ++it)
if (it-&Key-&name==btnName)
//检测到当前传入按钮
//判定其是否含有子级菜单
if (it-&Value.Num()==0)
CurrentUILayer = (it-&Key-&level)+1;
CurrentUILayerArrayName.Empty();
for (auto sit = it-&Value.CreateIterator(); ++sit)
CurrentUILayerArrayName.Add((*sit)-&name);
这一部分代码大家简单看一下就可以知道主要是在操作一下数据,同时这些方法是暴露给蓝图的,所以提供了返回值,告知蓝图是否操作成功,成功的话通过蓝图可以直接调用
& & & & & & & & TArray&FString& CurrentUILayerArrayN& && &获取用户所需要当前层级的按钮组的名称信息,再通过蓝图把这些数值显示到对应的UI上就可以了。
那么下面附上源码和发布后的Demo,有什么问题我们再具体交流一下把。
游客,如果您要查看本帖隐藏内容请
每日推荐:
12/50主题帖子积分
注册看看, 积分 2, 距离下一级还需 48 积分
注册看看, 积分 2, 距离下一级还需 48 积分
在线时间1 小时
发表于 7&天前
每日推荐:
111/50排名<font color="#FF昨日变化196主题帖子积分
注册看看, 积分 11, 距离下一级还需 39 积分
注册看看, 积分 11, 距离下一级还需 39 积分
在线时间7 小时
每日推荐:
115/50排名<font color="#FF昨日变化45主题帖子积分
注册看看, 积分 15, 距离下一级还需 35 积分
注册看看, 积分 15, 距离下一级还需 35 积分
在线时间2 小时
每日推荐:
61452/1500排名<font color="#FF昨日变化8主题帖子积分
蛮牛粉丝, 积分 1452, 距离下一级还需 48 积分
蛮牛粉丝, 积分 1452, 距离下一级还需 48 积分
在线时间573 小时
这一部分代码大家简单看一下就可以知道主要是在操作一下数据,同时这些方法是暴露给蓝图的,所以提供了返回值,告知蓝图是否操作成功,成功的话通过蓝图可以直接调用
& && && && && & TArray&FString& CurrentUILayerArrayN& && &获取用户所需要当前层级的按钮组的名称信息,再通过蓝图把这些数值显示到对应的UI上就可以了。
那么下面附上源码和发布后的Demo,有什么问题我们再具体交流一下把。
每日推荐:
12/50排名<font color="#FF昨日变化196主题帖子积分
注册看看, 积分 2, 距离下一级还需 48 积分
注册看看, 积分 2, 距离下一级还需 48 积分
在线时间1 小时
每日推荐:
296/150排名<font color="#FF昨日变化10主题帖子积分
初来乍到, 积分 96, 距离下一级还需 54 积分
初来乍到, 积分 96, 距离下一级还需 54 积分
在线时间35 小时
收藏了!!!!!!!!!!!!!!11111
每日推荐:
251/150排名<font color="#FF昨日变化45主题帖子积分
初来乍到, 积分 51, 距离下一级还需 99 积分
初来乍到, 积分 51, 距离下一级还需 99 积分
在线时间11 小时
sadfa23w4qw4545
每日推荐:
3185/300排名<font color="#FF昨日变化8主题帖子积分
偶尔光临, 积分 185, 距离下一级还需 115 积分
偶尔光临, 积分 185, 距离下一级还需 115 积分
在线时间74 小时
附上源码和发布后的Demo,有什
每日推荐:
134/50排名<font color="#FF昨日变化17主题帖子积分
注册看看, 积分 34, 距离下一级还需 16 积分
注册看看, 积分 34, 距离下一级还需 16 积分
在线时间14 小时
看起来还是很复杂啊~~~
每日推荐:
5842/1000排名<font color="#FF昨日变化3主题帖子积分
熟悉之中, 积分 842, 距离下一级还需 158 积分
熟悉之中, 积分 842, 距离下一级还需 158 积分
在线时间375 小时
RE: 虚幻4简单Demo项目制作 [修改]
每日推荐:
274/150主题帖子积分
初来乍到, 积分 74, 距离下一级还需 76 积分
初来乍到, 积分 74, 距离下一级还需 76 积分
在线时间0 小时
每日推荐:
12/50主题帖子积分
注册看看, 积分 2, 距离下一级还需 48 积分
注册看看, 积分 2, 距离下一级还需 48 积分
在线时间0 小时
感谢楼主分享,好人一生平安!
每日推荐:
13/50主题帖子积分
注册看看, 积分 3, 距离下一级还需 47 积分
注册看看, 积分 3, 距离下一级还需 47 积分
在线时间0 小时
谢谢楼主分享
每日推荐:
146/50主题帖子积分
注册看看, 积分 46, 距离下一级还需 4 积分
注册看看, 积分 46, 距离下一级还需 4 积分
在线时间22 小时
每日推荐:
经过游戏蛮牛认证的蛮牛小翻译
连续签到30天
购买游戏蛮牛书籍
社区QQ达人
使用QQ帐号登录论坛的用户扫一扫,访问微社区
只需一步,快速开始
只需两步,快速登录
扫一扫,访问微社区
只需一步,快速开始
只需两步,快速登录
后使用快捷导航没有帐号?
本版主题:135, 今日更新:0
虚幻4视频教程
版块主题&&&
adminycmspBBa52587ziyuchengyanJ50MKV2multimedia3dRagnarokUnendineleqirmfltodb7080immocatzerg1981paladin123RabbiTwogodlikeasy当前位置: >
> Unreal Engine虚幻4引擎 for Mac V4.0 苹果电脑版
Unreal Engine虚幻4引擎 for Mac V4.0 苹果电脑版
Unreal Engine Mac版下载
软件大小:57.7MB
软件语言:英文软件
软件类型:
软件授权:免费软件
更新时间:
软件类别:开发软件
软件官网:
应用平台:
网友评分:
软件介绍人气软件下载地址相关文章
MAC系统下下最好用的svn客户端当属于Versions for mac了,因为SVN的知名客户端TortoiseSVN只支持Windows系统,所以Versions就是目前Mac OS最好的SVN客户端。 Versions在使MAC系统下下最好用的svn客户端当属于Versions for mac了,因为SVN的知名客户端TortoiseSVN只支持Windows系统,所以Versions就是目前Mac OS最好的SVN客户端。 Versions在使Dreamweaver CS6是世界顶级软件厂商Adobe推出的一套拥有可视化编辑界面,用于制作并编辑网站和移动应用程序的网页设计软件。由于它支持代码、拆分、设计、实时视图等多种方MAC版Eclipse软件相信很多程序们都非常熟悉,这是一个开放源代码的、基于Java的可扩展开发平台。大都数Java初学者们都用它来编写代码,因为,Eclipse 附带了一个标准的插件mac版TortoiseSVN是 Subversion 版本控制系统的一个免费开源客户端,相较于其他的版本控制软件 RCS、CVS,SVN采用了分支管理系统,可以超越时间的管理文件和目录。文件保存mac版Navicat Premium是一款可以在苹果电脑上运行的一个可多重连接的数据库管理工具,它可让你以单一程序同r连接到目前世面上所有版本的主流数据库并进行管理和操作,支持PlistEdit Pro Mac是一款可以在苹果电脑上使用的Plist文本编辑器。PlistEdit Pro Mac对很多用户们来说是一款强大的黑苹果神器,大多数软件破解的时候都需要修改plist文件,一个综合性的Java编程环境,被许多开发人员和行业专家誉为市场上最好的IDE。它提供了一系列最实用的的工具组合:智能编码辅助和自动控制等mac版Xcode是一款Mac OS系统以及IOS系统开发者专用于构建 Mac OS X 及 iOS 应用程序的完整工具集 - Xcode 5 的工具。经过重新设计,它们的性能更优秀、使用更容易,能带给MyEclipse for mac是一款可以运行在Mac OS平台上的编程工具。它是在 eclipse 基础上加上自己的插件开发而成的功能强大的企业级集成开发环境,主要用于Java、Java EE以及移
Unreal Engine虚幻4引擎 for Mac V4.0 苹果电脑版
CopyRight &
JB51.Net , All Rights Reserved您的位置: >
> 虚幻4引擎(unreal engine 4) v4.5最新版
虚幻4引擎(unreal engine 4) v4.5最新版
软件大小:2.89G
软件语言:简体中文
软件类型:国产软件
软件授权:共享软件
更新时间:
软件类别:安装制作
软件官网:
应用平台:Windows8, Windows7
网友评分:7.4分
虚幻4引擎(unreal engine 4)是目前世界最知名授权最广的顶尖游戏引擎,没有之一,独自占有全球商用游戏引擎80%的市场份额。尤其单机游戏的爱好者们,估计你已经数不清看见“本游戏由虚幻引擎开发”这些字眼有多少次了。Epic公司这次带来了的旷世之作“虚幻4引擎”,能够支持DX11、物理引擎PhysX、APEX和NVIDIA 3D等技术以打造逼真的画面,具有一些非常棒的图形处理能力,包括高级动态光照,新的粒子系统等等。自它问世的那天起,就赢得了万千游戏开发商的宠爱,没有人不被它的惊艳特效所震撼。虚幻4引擎是一个面向PC、Xbox 360、iOS和PlayStation 3等平台的完整开发框架,其中提供了大量核心技术、内容创建工具以及支持基础设施内容。而且UnrealEngine的各方面功能设计思想都是使得内容创建和编程变得更方便,赋予美工人员及游戏设计人员尽可能多的控制权来开发可视化环境中的资源,最小化程序员的协助,同时为程序员提供一个高度模块化的、可升级的、可扩展的架构,以便可以开发、测试及发行各种类型的游戏。虚幻引擎通过Epic Games的集成合作伙伴计划集成了大量领先的中间件技术,成就了虚幻游戏引擎的高度成熟的工具,是专门为加速程序员构建非常复杂的、次时代内容而设计的。使用说明1、选择空余目录解压”UnrealEngine-4.5.0-release.7z“,解压后约23G2、进入解压后的目录,选择UnrealEngine-4.5.0-release\Engine\Binaries\Win64下的“UE4Editor.exe”运行即可,大家可以创建快捷方式到桌面,方便使用。虚幻4引擎4.5新功能光线追踪距离场软阴影这是一种全新的动态投影模式,通过在距离场内追踪光线生成细节锐利的柔和区域阴影,从而实现让投影在近处拥有足够的细节,而拉长的阴影则会逐渐柔和起来。光线追踪阴影可以比传统的级联阴影贴图(CSM)更有效地计算出视野距离,当然,在虚幻4引擎中,可以同时使用光线追踪和CSM,汲取两者优点,得到最佳效果。屏幕空间次表面散射虚幻4引擎材质模型新增了一个“次表面”属性,开发者可以使用这一功能创建出极为逼真的皮肤以及其他非常高大上的效果。UMG图形UI设计工具Unreal Motion Graphics在默认状态下是可用的,开发者只需简单地创建一个新“Widget Blueprint”就可以开始设计UI,而UE开发团队表示将会继续改进这一工具,不断添加新的功能。自动C++热重载在开发者的C++游戏代码通过Visual Studio或Xcode进行编译时,软件将自动进行“热重载”,而无需关闭编辑器,而当对代码进行编辑的过程中,引擎也会即时作出反馈。动画重定位系统Unreal Engine 4.5拥有一套全新的动画目标重定位系统,以帮助开发者实现在不同的人形骨架之间转换动画。
虚幻4引擎(unreal engine 4) v4.5最新版
高速下载通道
其它下载地址
感谢您对多多软件站的信任,请把这份信任分享给您的朋友!
您的评论需要经过审核才能显示!
软件排行榜
1.83M / 简体中文 /7分
17.3M / 简体中文 /8分
6.26M / 简体中文 /8.1分
6.58M / 简体中文 /7.9分
460M / 简体中文 /7.5分
6.93M / 简体中文 /8.2分
5.4M / 简体中文 /7.4分
5.17M / 简体中文 /6.7分
2.7M / 多国语言 /8分
4.69G / 简体中文 /5分
Copyright (C)
. All rights reserved.}

我要回帖

更多关于 actor critic 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信