- 博客(13)
- 收藏
- 关注
原创 UE GamePlay框架(八) WorldContext、GameInstance、Engine
2、而对于编辑器来说,EditorWorld其实只是用来预览,所以并不拥有OwningGameInstance,而PlayWorld里的OwningGameInstance才是间接保存了GameInstance.1、Standalone Game:会使用UGameEngine来创建出唯一的一个GameWorld,因为也只有一个,所以为了方便起见,就直接保存了GameInstance指针。WorldContext既负责World之间切换的上下文,也负责Level之间切换的操作信息。1、World世界类型。
2022-12-13 16:03:34
616
1
原创 UE GamePlay框架(七) UObject、Actor、Component
•TSet OwnedComponents :保存着这个Actor所拥有的所有Component,一般其中会有一个SceneComponent作为RootComponent。•Actor之间的父子关系却是通过Component确定的。UE里是通过Child:AttachToActor或Child:AttachToComponent来创建父子连接的.•SceneComponent提供了两大能力:一是Transform,二是SceneComponent的互相嵌套。
2022-12-13 16:00:58
644
原创 UE GamePlay框架(六) Subsystems:一套可以定义自动实例化和释放的类的框架
Subsystem对象的生命周期取决于其依存的Outer对象的生命周期,随着Outer对象的创建而创建,随着Outer对象的销毁而销毁。而选择依存哪种Outer对象,就是选择哪种Subsystem生命周期,靠的就是选择继承于哪个Subsystem基类。从游戏的启动开始创建,游戏退出时销毁。1、Subsystems:指的是这整套“子系统”框架,包含了定义的类以及运作机制。3、5类Outer对象:Subsystem对象依存属于的5类Outer对象。4、生命周期5类:引擎已经预定义的5个让你可以由此派生的父类。
2022-12-13 15:57:27
531
原创 UE GamePlay框架(五) Controller、APlayerController、AAIController
(3)从存在性上:Controller的生命期比Pawn要长一些,比如我们经常会实现的游戏中玩家死亡后复活的功能。(1)从概念上:如果是一些Pawn本身固有的能力逻辑,如前进后退、播放动画、碰撞检测之类的就完全可以在Pawn内实现;(3)PlayerController也不一定存在,对于联机游戏,对方玩家被同步过来的将只有PlayerState,对方玩家的PlayerController只在服务器上存在。(1)对实现游戏逻辑来说,PlayerController里的变量的意义在于更好的实现控制。
2022-12-13 15:40:28
981
原创 UE GamePlay框架(四) Pawn、Character
2、像人一样行走的CharacterMovementComponent, 尽量贴合的CapsuleComponent,SkeletalMesh。(3)MovementInput的基本响应接口。(2)PhysicsCollision表示。1、Character是人形的Pawn。(1)可被Controller控制。二、Character。
2022-12-13 15:34:08
320
原创 UE GamePlay框架(三)Level、World
•streamingLevels保存整个World的Levels配置列表。PersistentLevel和CurrentLevel只是个快速引用。在编辑器里编辑的时候,CurrentLevel可以指向其他Level,但运行时CurrentLevel只能是指向PersistentLevel。•StreamingLevels:后续动态加载Level。•Levels:保存有所有当前已加载的Level。•PersistentLevel:主Level。一、Level:大陆。二、World:世界。
2022-12-13 15:30:42
420
原创 UE GamePlay框架(二) GameMode、GameState
(3)GameMode只在Server存在(单机游戏也是Server),对于已经连接上Server的Client来说,因为游戏的状态都是由Sever决定的,Client只是负责展示,所以Client上是没有GameMode的,但是有LevelScriptActor,所以GameMode里不要写Client特定相关的逻辑。(2)组合上,GameMode是可以应用在不同的Level的,所以通用的玩法应该放在GameMode里。(6)AGameModeBase->针对单机,AGameMode->针对多人联机。
2022-12-13 15:27:01
1368
原创 UE委托机制
一、基本概念:Delegate,委托,又称代理,本质是一个特殊类的对象,它内部可以储存(一个或多个)函数指针、调用参数和返回值.委托的触发者不与监听者有直接关联,两者通过委托对象间接地建立联系.委托的作用如同函数指针,但它更安全(支持编译期类型安全检查),并且更易于使用。动态委托:同样分为单播和多播,意义和上面一样. 只能绑定UFUNCTION, 支持序列化, 可在蓝图中使用, 可以有UPROPERTY修饰,上面三种都不可以.绑定时不需要函数指针,仅需要函数名称字符串即可。移除委托:UnBind()
2022-12-13 15:20:31
1131
原创 UE4资源编译解析与应用
2、格式:Binary、XML、Json、Yaml。二、资源编译(Cook、Binarization)5)全局优化、加密,文件冗余处理,减少文件读取时间。1、含义:将数据结构或者对象转换为可存储的对象。1)将资源数据由编辑器兼容方式转换成运行时数据。2)将数据类型转换为平台原生或者私有的格式。一、序列化(serialization)4)转换成内存最优或者性能最优的数据。3)数据压缩、量化处理。
2022-12-13 15:17:13
219
原创 UE网络同步
此类RPC可指定为服务器(仅在服务器上运行)、客户端(仅在Actor的拥有客户端上运行)或NetMulticast(在连接会话的所有机器上运行,包括服务器)。然后,服务器与连接的客户端分享游戏状态信息,并提供一种客户端之间通信的方法。设置自己的owner为拥有连接的PlayerController,或者自己owner的owner为拥有连接的PlayerController。RPC函数除了UObject类型的指针以及constFString&的字符串外,其他类型的指针或者引用都不可以作为RPC的参数。
2022-12-13 14:50:03
871
原创 UE GamePlay框架(一) GameInstance、SaveGame
UE GamePlay框架(一) GameInstance、SaveGame
2022-10-20 11:24:37
921
原创 vs使用malloc分配空间报断点,求大神解答
vs使用malloc分配空间报断点,求大神解答void LoadMapDate(){BusMap_g.bus_num = bus_num;BusMap_g.buses = (Bus*)malloc(sizeof(Bus) * bus_num);//在这它就报断点了int i;for (i = 1;i <= bus_num;i++){strcpy(BusMap_g.buses[i].name, bus[i].name);BusMap_g.buses[i].start = -1;Bus
2021-02-02 11:56:10
1214
4
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人