BlueRose
文章97
标签28
分类7
开始编写GameAbility相关逻辑

开始编写GameAbility相关逻辑

前言

本人最近看了GameplayAbility的wiki与官方的ActionRPG案例,大致对此有了一定了解。所以在此分享相关经验顺便作为学习笔记。

wiki采用了第三人称模板来进行讲解。讲解了几个主要类的概念、参数以及用法。

ActionRPG则是一个较为完整的案例:它通过c++ 往几个GameplayAbility的基础类中添加了若干逻辑,使得之更加适合于RPG项目。大部分改动都很不错,甚至直接复制,让它作为你的RPG模板都是没问题。它的主要逻辑以及表现都在于蓝图中(技能与效果),所以它也是一个c++与蓝图结合开发的好例子。(注意:GameAbility无法完全通过蓝图开发)

所以接下来我也会适当讲解actionRPG的结构。

注意:有关网络同步的我都会略过。

使用Gitlfs对uasset、umap等二进制文件进行版本管理

使用Gitlfs对uasset、umap等二进制文件进行版本管理

前言

因为GameplayAbility属于蓝图c++混合编程框架,所以对蓝图类与地图进行版本管理是十分重要的事情。所以本文将在这里介绍git的二进制文件版本管理方案。

基于插件的StaticMesh多Pass绘制方案

基于插件的StaticMesh多Pass绘制方案

前言

StaticMesh与SkeletalMesh的实现方法比较类似,不过两者的绘制方式有很大的不同。不过庆幸的是,Static的MeshBatch设置在绘制函数的外面。

基于插件的SkeletalMesh多Pass绘制方案

基于插件的SkeletalMesh多Pass绘制方案

本文仅供抛转引玉,为大家提供一个可行思路。因为本人目前仅仅是个Ue4业余爱好者,手头没有含有Lod的骨骼模型做测试,所以请勿在未测试的情况下直接把本插件用于生产。

Qt On Android 隐藏状态栏的方法

Qt On Android 隐藏状态栏的方法

注意点

隐藏状态栏时,第一个界面不能使用Qt设计师界面类(创建项目时,不勾选创建界面选项)。不然以下方法皆会无效。

UTexture2D的读取与写入数据并且保存成Asset

UTexture2D的读取与写入数据并且保存成Asset

UTexture2D的读取与写入数据

在阅读@YivanLee的文章
https://zhuanlan.zhihu.com/p/45171840

我发现“向UTexture2D写入数据”这节有些纰漏:

  1. 作者没有说明Texture2D->PlatformData->Mips[0].BulkData.LockReadOnly()返回空指针的详细情况。
  2. 作者实现的写入是临时性的。

在查阅国外资料时,我在isaratech的网站里找到解决方案,在此我将进行简单说明。(原文地址在结尾会介绍)

(虚幻4Shader篇)开始编写ComputeShader

(虚幻4Shader篇)开始编写ComputeShader

本文的大部分代码参考@YivanLee的文章,特此说明

有关ComputeShader的原理解释可以参考:https://zhuanlan.zhihu.com/p/36697128
这从此文可以得知ComputeShader是并行渲染的,所以需要设定UnbindBuffers。他与别的Shader通过RenderTarget交换数据。

(虚幻4Shader篇)向Shader传递数据

(虚幻4Shader篇)向Shader传递数据

基础类型数据

Shader中的基础类型数据,例如:int、float4等的传入方式如下:

  1. 在你声明的Shader类中声明FShaderParameter变量。
  2. 在构造函数中绑定Shader中的变量。
  3. 在序列化函数中添加声明的FShaderParameter变量。
  4. 实现自定义的设置Shader变量函数,并在最终绘制前调用。
(虚幻4Shader篇)开始编写最简单的Shader

(虚幻4Shader篇)开始编写最简单的Shader

前言及学习建议

本人最近在学习UnrealEngine的GlobalShader,在这个过程中阅读了@YivanLee的Shader系列文章,大大提高了学习速度。但这些代码大多基于4.19,其中部分代码将会被废弃,所以我撰写这篇在此分享4.22版本的GlobalShader相关经验。

本文意在理顺思路,教会读者如何搭建基础的Shader测试环境,顺便总结学习心得,所以本文不会将所有代码贴出,详细代码请参考github。

大部分内容解释还请参看了@YivanLee的文章,我认为重复造轮子没有意义。具体代码可以参考我的github,读者可以按照commit一步一步学习代码:

https://github.com/blueroseslol/BRPlugins

PBRT读后感与阅读建议

PBRT读后感与阅读建议

看懂PBRT需要有一定c++ 基础,并且对c++11有一定了解。一定的数据结构基础。