[Unreal]Dynamic Material (C++)

本文介绍如何在Unreal Engine 4中使用C++代码为AI角色设置独特的材质,通过修改材质参数Color来区分AI与玩家角色,实现方法包括创建动态材质实例并设定Vector参数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

       好记性不如烂笔头,而且Unreal4用的相对来说也比较少,工作用Unity,学习时间大部分用在DirectX上,也就偶尔看看Unreal。Unreal的API肯定记不住,现在写下来,省的下次再去Google看一堆文章,方便自己。
       看着蓝图教程,用C++来实现,发现自己还是满蛋疼的。教程中是拖入一个新的Mesh来区分AI和Player,懒得拖,就用Player的Mesh,修改下显示颜色来做区分,简单粗暴。
       先来看下原来的材质球:


       拖一个VectorParameter,取名为Color,再跟之前的TextureSample相乘就好,这个BaseColor应该是Diffuse(漫反射吧,我猜的,看到了Specular和Normal)


       接着就是代码上的修改了:

void AAICharacter::Initialize()
{
	// Set Skeletal Mesh
	auto skeletalMesh = GetMesh();
	static ConstructorHelpers::FObjectFinder<USkeletalMesh> aiMesh(
		TEXT("SkeletalMesh'/Game/Model/Character/Eve_by_J__Gonzales.Eve_by_J__Gonzales'"));
	if (aiMesh.Object != nullptr)
	{
		skeletalMesh->SetSkeletalMesh(aiMesh.Object);
		auto meshLocation = FVector(0.0f, 0.0f, -88.0f);
		auto meshRotation = FRotator(0.0f, -90.0f, 0.0f);
		auto meshScale = FVector(1.0f, 1.0f, 1.0f);
		auto meshTransform = FTransform(meshRotation, meshLocation, meshScale);
		skeletalMesh->SetRelativeTransform(meshTransform);
	}

	// Create Dynamic Material
	auto dynamicMaterial = skeletalMesh->CreateDynamicMaterialInstance(0);
	dynamicMaterial->SetVectorParameterValue(TEXT("Color"), FLinearColor(1.0f, 0.0f, 0.0f, 1.0f));
}

       上面一段就是AI设置Mesh的代码,跟Player的代码一样。有注释。接下来的2行代码就是修改材质球中参数名为Color的VectorParameter,为了区分,将AI的改成红色。
       效果如下:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值