我正在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);
}
}
答案 0 :(得分:0)
用于缩小网格渲染器的更改
meshRenderer = GetComponent<MeshRenderer>();
到
meshRenderer = GetComponent<SkinnedMeshRenderer>();
如果您的网格物体使用的是单一材质(仅一个材质插槽),则更改后代码应该可以工作