主要工作:
本周完成的第一个工作是完成了材质,系统进入界面和动画的制作。
工作介绍:
1.首先创建一个空的关卡:名字取为start
2.进行地形的搭建,这里的材质制作采用了多材质混合的方法。具体步骤如下:
a.创建一个材质球,为了方便识别取名为m_Mont:
b.利用LandscapeLayerWeight方法进行Texture的融合。base表示被添加的对象,Layer表示要添加的层对象,LandscapeLayerCoords(景观层坐标)用来生成UV坐标,这个坐标是将材质网络映射到地形地貌上。
c.将这个材质球赋给landscape.可以看到在地貌-描画-窗口看到添加上去的材质,这时的材质会发现还无法使用,需要点击加号创建层信息,一般选择权重法向那个,之后就会发现生成了地貌层信息文件,这样材质才可以开始使用:
d.使用时需要那个材质就点击那个材质用描画工具在landscape上进行操作,最终结果图:
3.进行水面材质的制作:为了让水面达到一种波光鳞里的效果,需要对材质进行重复偏移。下面是具体操作步骤:
a .将材质类型改为Translucent
b.在基础色上添加自己想要的水面颜色:
c.为了制造波光粼粼的效果,添加法线方向的偏移,获取系统的时间,利用Panner控制UV的偏移速度,选择一张高度贴图,可以产生动态效果:
d.之后设置反射光和折射光,lerp实现线性过渡,Feature Level Switch方法,输出参数为5个,下面表示的是四种不同的设备,是为了保证在不同的设备上都可以平滑过渡。:
e.看一下总的:
#include "CoreMinimal.h" #include "UObject/ObjectMacros.h" #include "Misc/Guid.h" #include "RenderCommandFence.h" #include "Materials/MaterialInterface.h" #include "StaticParameterSet.h" #include "MaterialShared.h" #include "Materials/MaterialExpressionMaterialFunctionCall.h" #include "Materials/Material.h" #include "Materials/MaterialInstanceBasePropertyOverrides.h" #include "Misc/App.h" #include "MaterialInstance.generated.h" class ITargetPlatform; class UPhysicalMaterial; class USubsurfaceProfile; class UTexture;
UCLASS(abstract, BlueprintType,MinimalAPI)
USTRUCT(BlueprintType)
struct FTextureParameterValue
{
GENERATED_USTRUCT_BODY()
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category=TextureParameterValue)
FName ParameterName;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category=TextureParameterValue)
class UTexture* ParameterValue;
UPROPERTY()
FGuid ExpressionGUID;
FTextureParameterValue()
: ParameterValue(NULL)
{
}
typedef const UTexture* ValueType;
static ValueType GetValue(const FTextureParameterValue& Parameter) { return Parameter.ParameterValue; }
};
USTRUCT(BlueprintType)
struct FVectorParameter
{
GENERATED_USTRUCT_BODY()
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category=VectorParameterValue)
FName ParameterName;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category=VectorParameterValue)
FLinearColor ParameterValue;
UPROPERTY()
FGuid ExpressionGUID;
FVectorParameterValue()
: ParameterValue(ForceInit)
{
}
typedef FLinearColor ValueType;
static ValueType GetValue(const FVectorParameterValue& Parameter) { return Parameter.ParameterValue; }
};
4.进行UI界面的制作:
a.创建一个用户交互控件:
b.简单做出一个demo:
c.button上的字体是在button上增加text产生的。
d.绑定button的触发事件,利用Execute Console Command方法,实现退出,Open Level方法实现关卡的切换:
e.在关卡蓝图中添加该控件,才可以显示出来,利用show Mouse Cursor方法,让鼠标在UI时显示出来,Set Input Mode UI Only 可以将用户的操控控制在UI上面,无法进行其他操作: