查看: 595|回复: 3

怎么在编辑时通过代码修改场景中蓝图里的材质或者声音!

[复制链接]

1

主题

342

帖子

7万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
75866
发表于 2015-9-30 21:31:09 | 显示全部楼层 |阅读模式




思路:1.可通过关卡蓝图获取获取场景中的所有actor,并且可以获得actor的名称    for (int32 ActorIdx = 0; ActorIdx GWorld- GetCurrentLevel()- Actors.Num(); ++ActorIdx)
    {
        AActor* pActor = GWorld- GetCurrentLevel()- Actors[ActorIdx];
        if (pActor == NULL) continue;
        FString ActorName = pActor- GetName();
      
    }
}
   2.根据蓝图名字查找要修改的东西属于那个actor,再从actor里查找需要修改的组件
     UClass*TargetClass = pActor- GetActorClass();
        bool const bIsBlueprintClass = (Cast UBlueprintGeneratedClass (TargetClass) != nullptr);
        if (bIsBlueprintClass)
        {
            TInlineComponentArray UActorComponent* SceneComponents;
            //获取所有子组件
            pActor- GetComponents(SceneComponents);
            for (int i = 0; i SceneComponents.Num(); ++i)
            {
                UActorComponent* SceneComp = SceneComponents;
                //替换第一级组件的材质纹理
                if (index == 0 SceneComp)
                {
// 获取原组件指针
                    UStaticMeshComponent* StaticActor = CastChecked UStaticMeshComponent (SceneComp);
                    if (StaticActor)
                    {
                        //替换原组件使用的纹理
                       
                    }
}
3.替换原组件使用的纹理
//根据新路径加载资源
               
UTexture* newTexture = LoadObject UTexture (nullptr, pAssetPath, nullptr, LOAD_None, nullptr);
TArray UMaterialInterface* UsedMaterials;
    //静态网格可能有N个材质
    InStaticMeshComponent- GetUsedMaterials(UsedMaterials);
    for (int32 MatIndex = 0; MatIndex UsedMaterials.Num(); MatIndex++)
    {
        UMaterialInterface* Material = UsedMaterials[MatIndex];
        UMaterialInstanceDynamic*MaterialInstance = Cast UMaterialInstanceDynamic (Material);
        if (MaterialInstance != NULL)
        {
            MaterialInstance- SetTextureParameterValue( basecolor_texture , newTexture);
        }
    }
上述代码是替换组件纹理的代码,如果是变量的话,有另外一套写法,不一定是最简单的方法,也是个可行的方案!希望大家共同研究!
回复

使用道具 举报

0

主题

818

帖子

2683

积分

vip会员

Rank: 1

积分
2683
发表于 2015-10-12 23:34:40 | 显示全部楼层
初来乍到,请多多关照   嘿嘿,回个贴表明我来过   
回复 支持 反对

使用道具 举报

0

主题

873

帖子

2866

积分

vip会员

Rank: 1

积分
2866
发表于 2015-10-13 00:57:50 | 显示全部楼层
真是有你的   
回复 支持 反对

使用道具 举报

0

主题

841

帖子

2751

积分

vip会员

Rank: 1

积分
2751
发表于 2015-10-13 09:29:34 | 显示全部楼层
…没我说话的余地…飘走  
回复 支持 反对

使用道具 举报

*滑块验证:
您需要登录后才可以回帖 登录 | enginedx注册

本版积分规则

 
 



邮件留言:


 
返回顶部