Я делаю (пробую / учусь) игру-настройщик персонажей в 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);
}
}