11 2018 档案
[UE4]RetainerBox,控制UI更新频率,把渲染后的UI当成Texture
摘要:RetainerBox是一个容器,只会影响其容器内的UI,RetainerBox的作用: 一、控制UI更新频率(可能是为有优化性能) 1、在UserWidget中添加Retainer Box容器,并在容器内添加一个名为TextBlock_0的TextBlock。 2、声明一个名为Counter的变量 阅读全文
posted @ 2018-11-30 10:48 一粒沙 阅读(5155) 评论(0) 推荐(0)
[UE4]圆形的动态材质,使用VectorParameter、Get Dynamic Material、Set Vector Parameter Value
摘要:一、新建一个名为M_FriendColor的材质。使用VectorParameter函数 二、新建一个名为FriendFlag的UserWidget,生成随机颜色,并传递给上一步设置的材质参数Color。 三、小地图图标暂时改成FriendFlag 四、运行游戏,小地图圆点是红色的,退出再次运行游戏 阅读全文
posted @ 2018-11-29 22:16 一粒沙 阅读(5420) 评论(0) 推荐(0)
[UE4]更通用的接口,将UserWidget作为图标添加到小地图
摘要:将图标改成UserWidget添加到小地图,UserWidget支持动画特效,更丰富小地图的功能。 一、在小地图图标结构体中,将Flag数据类型改成UserWidget,删除ImageWidget(类型是Image,因为不需要了) 二、注意:动态添加UserWidget到其他UserWidget,需 阅读全文
posted @ 2018-11-29 14:08 一粒沙 阅读(2154) 评论(0) 推荐(0)
[UE4]地图缩放
摘要:一、创建一个设置UI比例尺的函数 二、通过Get Cached Geometry获得当前UI实际显示的尺寸,Get Desired Size获得当前UI原始尺寸,计算得到UI缩放比例尺 三、地图比例尺*UI比例尺 = 最终缩放比例尺 阅读全文
posted @ 2018-11-29 12:21 一粒沙 阅读(2803) 评论(0) 推荐(0)
[UE4]UMG和关卡坐标变换、旋转小地图
摘要:一、优化上一节的蓝图,新建一个函数addFlagToCanvas(动态添加图标到Canvas) 二、 分析地图坐标系和UMG坐标系 要根据实际情况分析关卡坐标系。 UserWidget中的坐标系 三、根据上一步分析得到坐标系对应关系 四、根据上一步提供的公式,修改蓝图,关卡坐标系转换成UMG坐标系 阅读全文
posted @ 2018-11-28 14:34 一粒沙 阅读(3138) 评论(0) 推荐(0)
[UE4]更新Flag坐标
摘要:UserWidget中也是有Event Tick事件,游戏运行每一帧都会调用这个事件 一、在MiniMapFlagData结构体中,添加Slot和ImageWidget变量 二、在StaticMiniMap的AddFlag函数中 三、记得在调用AddFlag的时候,要赋值Actor参数 阅读全文
posted @ 2018-11-28 12:15 一粒沙 阅读(864) 评论(0) 推荐(0)
[UE4]认识CanvasPanelSlot,Construct Object From Class动态创建UI控件
摘要:Canvas Panel Slot是UserWidget的Canvas Panel组件容器内的组件特有的属性。 只有放置在Canvas Panel容器内才会有Canvas Panel Slot属性 可以在蓝图中动态设置Canvas Panel Slot属性 阅读全文
posted @ 2018-11-28 10:28 一粒沙 阅读(4205) 评论(0) 推荐(0)
[UE4]计算小地图比例尺
摘要:一、调整到顶视图,按住鼠标中键从地图的左边拉一根线到右边,可以看到距离是4000厘米(UE4单位是厘米)。 二、查看到缩略图片的长度是512px,512/4000 = 0.128,比例尺是0.128。(取缩略图与原始宽度,而不是游戏运行时小地图实际宽度?) 三、在TestMiniMap中调用的Set 阅读全文
posted @ 2018-11-27 19:51 一粒沙 阅读(2564) 评论(0) 推荐(0)
[UE4]小地图UI设计
摘要:一、新建一个名为TestMiniMap的UserWidget用来使用小地图StaticMiniMap。 二、在左侧“User Created”面板中可以看到除自身以外的其他所有用户创建的UserWidget。把“Static Mini Map”拖放进来,并勾选“Size To Content”。 S 阅读全文
posted @ 2018-11-27 13:05 一粒沙 阅读(4255) 评论(0) 推荐(0)
[UE4]小地图接口设计
摘要:一、地图缩略图片 二、要显示的图标及其对应的Actor 三、比例尺 四、对位点,只需要一个对位点就可以了。 MapImage:地图缩略图 MapRatio:比例尺 CenterPosition:中央对位点 参数类型 Flag:对应的小图标 Actor:要在小地图上显示的对象 阅读全文
posted @ 2018-11-27 10:07 一粒沙 阅读(994) 评论(0) 推荐(0)
[UE4]制作视野图标
摘要:一、在PhotoShop中新建一个64px*64px,背景色为透明的文档 二、填充“图层1”为白色 三、添加蒙版图层,并将前景色设置为黑色 四、将“图层1”选择45°,并往上拖放至如图位置 五、选择渐变工具,选择第二个预设渐变 六、按着“Shift”键,如图所示右上方下拖放,得到渐变图层 七、保存为 阅读全文
posted @ 2018-11-26 21:35 一粒沙 阅读(1022) 评论(0) 推荐(0)
[UE4]制作缩略图
摘要:一、创建一个专门用来做缩略图的角色CameraCharacter,不需要实体模型。 二、Auto Possess Player设置为“Player 0” 三、重力比例改成0(这样在天上的时候就不会往下掉) 四、照相机朝下,相机采用正交投影,并根据地图大小设置一个合适的Ortho Width值(正交宽 阅读全文
posted @ 2018-11-26 20:49 一粒沙 阅读(2325) 评论(0) 推荐(0)
[UE4]场景截图
摘要:要点: 一、鼠标在编辑器关卡中点一下,然后按F9键截图,右下角会出现截图后的文件链接,点击后会自动打开截图文件所在的文件夹。截图的大小正好的关卡视图的大小。 编辑器:F9键截图,只截图关卡视图界面 运行时:F9键截图,会截图整个显示器窗口。相当于按Print Screen键 二、按“~”调出控制台, 阅读全文
posted @ 2018-11-26 13:52 一粒沙 阅读(8476) 评论(0) 推荐(0)
[UE4]使用另一个相机Scene Capture Component 2D当小地图
摘要:挂一个相机(Scene Capture Component 2D)在人物角色的正上方,相机朝下,让UI上的某一块区域看到相机所显示的内容。 一、在人物角色正上方添加相机组件Scene Capture Component 2D,并旋转相机朝下(X轴方向是相机照射的方向)。 二、创建一个一个Render 阅读全文
posted @ 2018-11-26 10:18 一粒沙 阅读(10214) 评论(0) 推荐(0)
[UE4]网络游戏重点思考
摘要:一、哪些逻辑放服务器,哪些逻辑放客户端? 二、它们之间怎么通信?会不会覆盖? 三、服务器应该做哪些验证?(防止外挂) 阅读全文
posted @ 2018-11-24 15:28 一粒沙 阅读(418) 评论(0) 推荐(0)
[UE4]一分钟实现聊天系统
摘要:天系统:客户端发消息到服务器端,服务器端把收到的消息广播到所有客户端。 由于聊天对象需要支持“可复制”和每个客户端都发给一个,所以GameInstance、GameModeGameState都不适合存放用来做聊天系统。 一、PlayerController可以为聊天系统,只不过稍微有点复杂 二、Pl 阅读全文
posted @ 2018-11-20 22:09 一粒沙 阅读(4347) 评论(0) 推荐(0)
[UE4]增加观察者
摘要:角色死亡以后,让控制器控制另外一个只能移动,没有实体的Character角色 使用“Possess”函数让控制器控制新生成的观察者对象。如上图所示要使用Delay延迟1秒再生成观察者,是因为死亡的时候执行了AttachToComponent(把死亡时候第一人称模型的武器转移到第三人称模型上面去),然 阅读全文
posted @ 2018-11-19 21:11 一粒沙 阅读(1006) 评论(0) 推荐(0)
[UE4]Set Skeletal Mesh,在蓝图中设置骨骼模型
摘要: 阅读全文
posted @ 2018-11-19 20:18 一粒沙 阅读(2099) 评论(0) 推荐(0)
[UE4]使用Is Locally Controlled解决第一人称和第三人称武器位置问题
摘要:一、在第一人称网络游戏中,自己看到的是第一人称,其他玩家看到的自己是第三人称。 二、由于第一人称和第三人称是不同的模型,所以枪在模型上面的插槽位置也会不一样。 三、在武器挂载在人物模型的使用,使用“Is Locally Controlled”判断当前是否在本地控制的人物(而不是镜像人物),接收的Ta 阅读全文
posted @ 2018-11-18 11:31 一粒沙 阅读(1725) 评论(0) 推荐(0)
[UE4]多播(广播)
摘要:只有服务器才有权限做广播,所以要判断确保是服务器端才做广播,有以下几种方法: 一、使用“Switch Has Authority”判断是否在服务器端 因为character一定是在服务器端创建出来的,而且也默认开启“复制”选项,因此character中碰撞体事件会同时在服务器和客户端发生,因此在网络 阅读全文
posted @ 2018-11-18 10:49 一粒沙 阅读(2434) 评论(0) 推荐(0)
[UE4]单机游戏改网络游戏,不完全清单
摘要:把Actor的复制打开 中腰数据的复制打开,且只在服务器修改(比如角色属性血量) 需要同步的Actor,不在客户端Spawn 客户端的操作,先报告到服务器,服务器再广播到所有客户端 某些逻辑只在服务器运行(比如捡枪) 考虑相关性、延迟等等更多因素 。。。 阅读全文
posted @ 2018-11-04 19:32 一粒沙 阅读(655) 评论(0) 推荐(0)
[UE4]通过IP地址加入游戏
摘要: 阅读全文
posted @ 2018-11-04 12:51 一粒沙 阅读(1669) 评论(0) 推荐(0)
[UE4]Is Server判断是否在服务器端
摘要: 阅读全文
posted @ 2018-11-04 12:40 一粒沙 阅读(2807) 评论(0) 推荐(0)
[UE4]游戏中服务器切换地图,控制台命令Execute console Command
摘要:Execute console Command ServerTravel {地图名称}?listen 在服务器执行了这个命令,所有连接到该服务器的客户端都会跟着服务器同时切换到指定的地图。 1、创建一个切换地图UI 二、给角色绑定一个快捷召唤出地图切换UI 三、删除地图默认添加到地图的角色(防止添加 阅读全文
posted @ 2018-11-04 12:14 一粒沙 阅读(3897) 评论(0) 推荐(0)
[UE4]创建游戏、加入游戏
摘要:google搜: UE4 compile dedicated server,编译UE4专用服务器 UE4默认网络端口可以在引擎配置文件中修改: 一、创建文件。需要修改一下工程的配置文件DefaultEngin.ini,在文件最后加入: [OnlineSubsystem] DefaultPlatfor 阅读全文
posted @ 2018-11-02 12:59 一粒沙 阅读(2555) 评论(0) 推荐(0)
[UE4]模拟网络延迟和丢包
摘要:进入游戏界面,按下键盘的“~”键,打开控制台界面,输入net会自动列出跟网络相关的命令 1、Net pktLag=,模拟延迟,单位是毫秒 2、Net PktLagVariance=300,在模拟延迟的基础上,再上下浮动300毫秒。加上这个就会出现移动瞬移卡顿的效果 3、Net PKtLoss=,丢包 阅读全文
posted @ 2018-11-02 11:35 一粒沙 阅读(8521) 评论(0) 推荐(0)
[UE4]第一人称与第三人称
摘要:一、给Character添加一个SkeletalMesh,并设置为第三人称模型。并设置自己看不到该模型。 二、添加给骨骼的右手添加一个Socket插槽用来挂载武器 三、判断当前角色是否被本地Controller控制,如果不是,则表示要显示为第三人称模型,把武器挂载在上面第二步创建好的第三人称的右手武 阅读全文
posted @ 2018-11-01 23:36 一粒沙 阅读(2092) 评论(0) 推荐(0)
[UE4]GameMode、GameInstance、GameState、PlayerState、PlayerController
摘要:一、只有PlayerController和Pawn/Character才有输入事件(键盘、鼠标等等),PlayerState没有输入事件。 二、对于需要跨域关卡的数据信息,根据上图所知需要放到GameInstance,但是GameInstance是不支持复制的,所以在网络游戏中需要自己手动做Game 阅读全文
posted @ 2018-11-01 22:51 一粒沙 阅读(8645) 评论(0) 推荐(1)
[UE4]虚幻引擎UE4如何制作可拖动(Drag and Drop)的背包(Scrollbox)(转载)
摘要:最终效果 由于隐私保护,不想截实际的效果图,下面给出了示意图,左边是背包A,右边是背包B,将其中的子项目从左侧拖往右侧的背包,然后在插入位置放置。 第一步: 制作一个user widget(在内容浏览器中右键-ui widget-user widget),命名为subwidget_singleite 阅读全文
posted @ 2018-11-01 18:44 一粒沙 阅读(2668) 评论(0) 推荐(0)
[UE4]GameplayAbilities,技能系统插件
摘要:Unreal Engine 4(虚幻UE4)GameplayAbilities 插件入门教程(七)Ability的信息传递等 Unreal Engine 4(虚幻UE4)GameplayAbilities 插件入门教程(七)Ability的信息传递等 Unreal Engine 4(虚幻UE4)Ga 阅读全文
posted @ 2018-11-01 18:41 一粒沙 阅读(3159) 评论(0) 推荐(0)
[UE4]优先级与相关性
摘要:一、优先级 每个 Actor 都有一个名为 NetPriority 的浮点变量。这个变量的数值越大,Actor 相对于其他“同伴”的带宽就越多。和优先级为 1.0 的 Actor 相比,优先级是 2.0 的 Actor 可以得到两倍的更新频度。唯一影响优先顺序的就是它们的比值;所以很显然,您无法通过 阅读全文
posted @ 2018-11-01 16:54 一粒沙 阅读(2318) 评论(0) 推荐(0)
[UE4]RepNotify,更新通知
摘要:“复制”: 1、Replicated:复制更新 2、RepNotify:更新通知。选择这个选项,会自动生成一个通知函数(如上图所示的“OnRep_Health”),当这个变量的值有变化的时候,这个函数就会在服务器和所有客户端被调用。 之前我们是通过Tick事件来不停的检测更新Health的变化值(T 阅读全文
posted @ 2018-11-01 16:29 一粒沙 阅读(4006) 评论(0) 推荐(0)
[UE4]Reliable,可靠性
摘要:1、Reliable,不会丢失,立刻发出,适合重要的事件 2、Unreliable,可能会丢失,适合表现相关的和不重要的事件 3、全部的远程调用都使用Reliable,可能会造成网络拥堵 4、尽量避免在循环里面进行远程调用和勾选Reliable选项 阅读全文
posted @ 2018-11-01 16:06 一粒沙 阅读(1601) 评论(0) 推荐(0)
[UE4]RPC,远程调用
摘要:RPC 一、Remote Procedure Call:远程程序调用 二、一个进程调用另外一个进程上的函数 由于“Server-shoot”方法被标记为“在服务器上运行”,所以尽管是在第二个窗口(客户端)开火,输出的信息是:Server:准备射击,表明这是在服务器上运行。 在服务器上“Server- 阅读全文
posted @ 2018-11-01 13:55 一粒沙 阅读(6000) 评论(0) 推荐(0)
[UE4]先报告后广播模式
摘要:解决客户端射击,在服务器端和其他客户端看不到的问题。 一、把要广播的操作封装成一个事件(函数不支持网络属性),选择“多路传送” 二、创建一个事件,选择“在服务器上运行” 总结:从客户端执行的事件报告到服务器端,服务器端将要执行的操作广播到所有客户端。 阅读全文
posted @ 2018-11-01 13:14 一粒沙 阅读(590) 评论(0) 推荐(0)