当前位置: 首页 > news >正文

photoshop网站设计搜索引擎推广实训

photoshop网站设计,搜索引擎推广实训,怎么销售网站建设,苏州专业做网站的公司哪家好最近刚学完一套教程,准备研究研究官方的源码,看看自己能不能看懂。 当前分析只在本人能力之下能够分析的内容,如果有一些问题,还请大家指出。 开始 如果你打开一个别人的项目,你会从哪里看起,如果是我&am…

最近刚学完一套教程,准备研究研究官方的源码,看看自己能不能看懂。
当前分析只在本人能力之下能够分析的内容,如果有一些问题,还请大家指出。

开始

如果你打开一个别人的项目,你会从哪里看起,如果是我,我现在会先打开项目设置,地图和模式,查看设置的GameMode和GameInstance,从这里开始看。
可以看到,Lyra项目将这些内容的默认设置全改成了,个性化定义。
GameMode关系着整个玩法的相关内容,比如一个游戏可以有多种玩法,可以通过切换不同GameMode实现。
在这里插入图片描述
GameInstance管理整个游戏的生命周期,Lyra在这里主要实现了网络通信的相关内容。
在这里插入图片描述

我们从GameMode看起,GameMode里的InitGame,将会在下一帧执行一个函数,我现在推测这样的原因是为等待GameMode相关的内容都初始化完成,然后再去执行关卡数据配置加载。
在这里插入图片描述
函数里会通过各种方式去获取配置的资源ID(用户资产每个资产都会有一个固定的ID)
分别从URL 选项(OptionsString)
如果是在编辑器模式下运行(IsPlayInEditor()),检查开发者设置(ULyraDeveloperSettings)中的 ExperienceOverride。
检查命令行中是否提供了 Experience 参数(Experience=)。
检查当前地图的 WorldSettings 是否指定了默认的 Experience。
如果都没有,那么将回退到默认的资源ID
在这里插入图片描述
接着判断ID是否有效,然后通过LyraGameState身上的组件进行初始化,GameState管理着所有的PlayerState
在这里插入图片描述
这个组件是在LyraGameState里初始化的
在这里插入图片描述
在ULyraExperienceManagerComponent组件里的SetCurrentExperience函数,会通过获取到的资源ID,去加载配置,并进行初始化函数调用。
在这里插入图片描述
接着是函数StartExperienceLoad,这个函数里,会进行资源加载,里面进行了几件事

  • 将状态设置为加载状态
  • 从资产配置里获取需要加载的内容
  • 根据客户端和服务器区分加载不同的内容
  • 设置异步资源加载回调
  • 将加载包添加到异步加载队列,开始异步加载,不会阻塞当前运行队列
    在这里插入图片描述
    加载完成,将会调用OnExperienceLoadComplete资源加载完成函数,这里将会先验证配置数据,然后保存插件路径的数组清空。
    设置一个查询所需加载插件的路径,在添加时,还进行了去重处理。
    在这里插入图片描述
    从配置里通过上面的函数,找到所需加载的插件的路径
    在这里插入图片描述
    然后对所有插件进行加载,加载完成调用OnExperienceFullLoadCompleted函数
    在这里插入图片描述
    在OnExperienceFullLoadCompleted函数里,首先模拟延迟,并修改加载状态枚举
    在这里插入图片描述
    定义一个插件激活所需的上下文
    在这里插入图片描述
    定义激活操作函数
    在这里插入图片描述
    将配置项里的插件依次激活
    在这里插入图片描述
    最后修改加载状态,并广播委托
    在这里插入图片描述

关卡配置项

上面,我们查看了代码对关卡配置加载和处理的流程,接下来,我们看一下配置项的内容。

/*** Definition of an experience*/
UCLASS(BlueprintType, Const)
class ULyraExperienceDefinition : public UPrimaryDataAsset
{GENERATED_BODY()public:ULyraExperienceDefinition();//~UObject interface
#if WITH_EDITORvirtual EDataValidationResult IsDataValid(class FDataValidationContext& Context) const override;
#endif//~End of UObject interface//~UPrimaryDataAsset interface
#if WITH_EDITORONLY_DATAvirtual void UpdateAssetBundleData() override;
#endif//~End of UPrimaryDataAsset interfacepublic:// List of Game Feature Plugins this experience wants to have activeUPROPERTY(EditDefaultsOnly, Category = Gameplay)TArray<FString> GameFeaturesToEnable;/** The default pawn class to spawn for players *///@TODO: Make soft?UPROPERTY(EditDefaultsOnly, Category=Gameplay)TObjectPtr<const ULyraPawnData> DefaultPawnData;// List of actions to perform as this experience is loaded/activated/deactivated/unloadedUPROPERTY(EditDefaultsOnly, Instanced, Category="Actions")TArray<TObjectPtr<UGameFeatureAction>> Actions;// List of additional action sets to compose into this experienceUPROPERTY(EditDefaultsOnly, Category=Gameplay)TArray<TObjectPtr<ULyraExperienceActionSet>> ActionSets;
};

以上是配置的类,它是继承至UPrimaryDataAsset数据资产的,它是一种UE管理的数据资产类
UCLASS(BlueprintType, Const) 设置Const,标识了此实例的内容只读,不能够修改。

类里,覆写了两个函数

  • IsDataValid 在编辑器中校验数据的有效性
  • UpdateAssetBundleData 在编辑器中更新资源包信息,确保需要的资产在打包时被正确包含。

然后就是需要开发者配置的对应的四项数据:

  • GameFeaturesToEnable 当前配置所需的插件
  • DefaultPawnData 定义了玩家使用的角色相关数据,添加const,则角色数据配置不会被动态修改。
  • Actions 关卡配置加载完成后进行的一系列的处理,在上面,我们可以看到,是在资源加载完成后,调用了注册,加载和激活。
  • ActionSets 一些可以复用的操作集合

接下来,我们在UE里找到对应的资源查看一下,文件所在目录如下
在这里插入图片描述
这个是配置射击关卡的一些配置,有时间限制,也有击杀人数限制,只要有一项达到,则会结束游戏。
在这里插入图片描述
我们看一下相关配置,GameFeaturesToEnable 是配置所需的插件,以文本定义,我们可以在插件列表里找到对应名称的插件
在这里插入图片描述
接着是玩家操作角色的配置,我准备放到下一篇单独讲。
在这里插入图片描述
接着看一下操作列表,操作列表里的相关内容,操作配置,首先需要定义此操作的行为,在索引后面选择,选择后,才可以配置相关的数据,来实现功能。
在这里插入图片描述
操作是一个数组,而在添加的时候,就会进行实例化,相当于,添加一个其实是添加了一个实例。继承UGameFeatureAction都可以作为选择对象。这也出现了我们设置了对应的类型以后,下面就出现了对应的类的设置方法。
在这里插入图片描述
我们接着看一下当前类,里面封装了6个可继承的函数:

  • OnGameFeatureRegistering 游戏功能被注册(但尚未激活)时调用,可以用于预加载或初始化逻辑
  • OnGameFeatureUnregistering 当游戏功能被取消注册时调用,用于清理或回收资源。
  • OnGameFeatureLoading 在游戏功能即将被加载和激活时调用,用于准备激活前所需的资源或设置。
  • OnGameFeatureActivating(FGameFeatureActivatingContext& Context); 游戏功能被激活时调用。可以使用上下文参数(Context)传递额外信息。
  • OnGameFeatureActivating 游戏功能被激活时调用。老版本重载函数,没有上下文。
  • OnGameFeatureDeactivating(FGameFeatureDeactivatingContext& Context) 游戏功能被停用时调用。用于撤销激活期间的设置或释放资源。
/** Game Feature  激活期间需要执行的操作。 */
UCLASS(DefaultToInstanced, EditInlineNew, Abstract)
class GAMEFEATURES_API UGameFeatureAction : public UObject
{GENERATED_BODY()public:/** 当所属的游戏功能被注册(但尚未激活)时调用。可以用于预加载或初始化逻辑。 */virtual void OnGameFeatureRegistering() {}/** 当游戏功能被取消注册时调用。用于清理或回收资源。 */virtual void OnGameFeatureUnregistering() {}/** 在游戏功能即将被加载和激活时调用。用于准备激活前所需的资源或设置。 */virtual void OnGameFeatureLoading() {}/** 游戏功能被激活时调用。主要的执行逻辑在这里实现,可以使用上下文参数(Context)传递额外信息。 */virtual void OnGameFeatureActivating(FGameFeatureActivatingContext& Context);/** 游戏功能被激活时调用。一个老版本的重载方法(无上下文参数) */virtual void OnGameFeatureActivating() {}/** 游戏功能被停用时调用。用于撤销激活期间的设置或释放资源。 */virtual void OnGameFeatureDeactivating(FGameFeatureDeactivatingContext& Context) {}#if WITH_EDITORONLY_DATA/** 在编辑器环境下使用,用于将额外的资产包数据添加到资产包中。 */virtual void AddAdditionalAssetBundleData(FAssetBundleData& AssetBundleData) {}
#endif
};

当前项目里可以添加的有在这里插入图片描述
我们可以在源码里查看对应的类,也可以通过名称搜索
在这里插入图片描述
就比如给玩家角色添加技能的操作类,里面覆写了激活和取消激活的函数,然后有个参数设置需要添加的技能,这也是在配置项里选择了此类后,生成实例可设置的内容。
在这里插入图片描述
接着,就是关卡配置的最后一项,是操作的集合
在这里插入图片描述
这个参数就没什么好讲的了,相对于关卡配置少了两项,只有所需插件和操作,这个理解是为了方便将相应的需求的内容放置到一个操作集里,这样,可以在多个关卡配置里使用。
在这里插入图片描述

http://www.hkea.cn/news/12205/

相关文章:

  • 苏州新区做网站宁波seo行者seo09
  • 做一份seo网站诊断西安关键词优化平台
  • 外贸公司网站如何做推广营销渠道策略
  • 哈尔滨网站建设流程360浏览器网页版入口
  • wordpress 如何修改主图cssseo系统推广
  • 阿里云能放企业网站吗小黄豆crm
  • 富阳网站建设惠州网站建设
  • 北京优化网站方法百度官方客服平台
  • 哪个网站开发好微商软文范例大全100
  • wordpress 301重定向插件长春seo网站排名
  • free wordpress湖南专业seo公司
  • 学院网站建设开题报告如何创建网站教程
  • 开网站怎么赚钱软文推广渠道主要有
  • 南联网站建设深圳谷歌优化seo
  • 站酷设计官网软件开发app制作
  • 永城市专业做网站广州网站建设技术外包
  • 怎么知道网站是否被百度收录韶关疫情最新消息
  • 重庆市建设工程信息网的信用信息发布平台成都seo公司
  • 康展 wordpress网络优化网站
  • 专做奶粉网站保证一定正品宁波seo排名外包公司
  • 手机社交网站建设西安网站优化培训
  • 网站系统开发西安楼市最新房价
  • html5 手机网站 模板营销型网站建设团队
  • 青海建设厅官方网站百度客服人工电话
  • 06年可以做相册视频的网站软文范例大全
  • 网站开发区书籍品牌推广计划
  • 北京市电力建设公司网站百度号码认证平台
  • 学生个人网站作品网络推广有多少种方法
  • 郑州网站服务公司广告推广免费发布
  • 网站制作发票seo推广公司哪家好