需要帮助更改按钮上的辅助地图单击

时间:2019-07-10 10:29:04

标签: c# unity3d

我正在Unity中制作(尝试/学习)角色定制器游戏,因此我很难确定如何在角色皮肤上添加衣服作为辅助地图,并能够单击和更改按钮它在运行时。我的计划是要有一个可以更改地图的按钮:

皮肤-改变肤色

服装-更改服装覆盖。

这些地图共享相同的网格。

我该怎么做?我需要哪种类型的脚本?我是团结的新手,将不胜感激!

还有另一种方法来更改覆盖皮肤图吗?我可以检出任何有助于更改材料的材料工具吗?

我已经尝试了所有可以在网上找到的材料脚本,似乎没有将这两种材料分开。我确实从youtube上看到了这个脚本,解释了材质切换,但是我无法在皮肤蒙皮的网格角色上使用它,而且它是用于主纹理而不是辅助贴图。这里的代码确实更改了一个简单的多维数据集,但似乎不适用于我的操纵角色?

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class MaterialEditor : MonoBehaviour
{

  MeshRenderer meshRenderer;

  public Texture albedoTexture;
  public Texture normalTexture;

  float rColorValue = 1f;
  float gColorValue = 1f;
  float bColorValue = 1f;

  void Start()
  {
    meshRenderer = GetComponent<MeshRenderer>();
  }

  public void RColorValue(float rColor)
  {
    rColorValue = rColor;
    meshRenderer.material.SetColor("_Color", new Vector4(rColorValue, gColorValue, bColorValue, 1f));
  }
  public void GColorValue(float gColor)
  {
    gColorValue = gColor;
    meshRenderer.material.SetColor("_Color", new Vector4(rColorValue, gColorValue, bColorValue, 1f));
  }
  public void BColorValue(float bColor)
  {
    bColorValue = bColor;
    meshRenderer.material.SetColor("_Color", new Vector4(rColorValue, gColorValue, bColorValue, 1f));
  }

  public void ChangeAlbedoTexture()
  {
    meshRenderer.material.SetTexture("_MainTex", albedoTexture);
  }

  public void ChangeNormalTexture()
  {
    meshRenderer.material.SetTexture("_BumpMap", normalTexture);
  }

  public void MetallicSlider(float metallic)
  {
    meshRenderer.material.SetFloat("_Metallic", metallic);
  }

  public void SmoothnessSlider(float smoothness)
  {
    meshRenderer.material.SetFloat("_Glossiness", smoothness);
  }
}

1 个答案:

答案 0 :(得分:0)

用于缩小网格渲染器的更改

meshRenderer = GetComponent<MeshRenderer>();

meshRenderer = GetComponent<SkinnedMeshRenderer>();

如果您的网格物体使用的是单一材质(仅一个材质插槽),则更改后代码应该可以工作