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

百度网站推广怎么做seo网络推广有哪些

百度网站推广怎么做,seo网络推广有哪些,手机好用的wordpress,网站开发费用结算最近刚学完一套教程,准备研究研究官方的源码,看看自己能不能看懂。 当前分析只在本人能力之下能够分析的内容,如果有一些问题,还请大家指出。 开始 如果你打开一个别人的项目,你会从哪里看起,如果是我&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/619207/

相关文章:

  • 工业设计软件上市公司搜索引擎优化的方法
  • 网站建设公司创意网站网络推广推广
  • 浙江三建建设集团有限公司网站关键词的作用
  • 网站建设官方网站教育培训机构加盟十大排名
  • 万网上传网站seo免费
  • 孝感做网站公司百度热议排名软件
  • 建设网站费用吗廊坊seo快速排名
  • 网站建设公司怎样拓展网站业务大连网站推广
  • 什么网站可以免费做找客户东莞seo建站推广费用
  • 合肥微信网站建设购物网站如何推广
  • 网站建设课程简介图片百度官网认证免费
  • 月夜影视在线观看免费完整版韩剧关键词排名优化报价
  • 做网站的工作时间兰州seo公司
  • css怎么嵌入到html直通车关键词优化口诀
  • 虚拟网站php专业型seo网站关键词排名提升
  • 找人合伙做网站平台b2b电商平台
  • 手机网站建设技术方案找网站设计公司
  • 杭州如何设计公司网站惠州seo网站推广
  • 成都网站建设门户大连企业网站建站模板
  • 游戏卡充值可以做网站吗百度竞价关键词出价技巧
  • 建设企业网站就等于开展网络营销网店推广实训报告
  • dede无法更新网站主页到百度联盟注册
  • wordpress支持爱奇艺企业网站seo托管怎么做
  • 永川做网站的武汉百度快速排名提升
  • 做网站的故意给中病毒网络营销广告
  • 关于阅读类网站的建设规划书友情链接系统
  • 专业做幼儿园设计的网站百度小程序关键词优化
  • 腾龙时时彩做号网站整站优化关键词排名
  • 正规的网站制作与推广百度广告运营
  • 网站建设估价引擎搜索有哪些