У меня есть шейдер, который отображает цвета вершин меша и имеет возможность обрезать вершины синего цвета.Я бы хотел, чтобы пользователь мог включать / отключать этот параметр при использовании приложения.
Я пробовал предложенные здесь предложения Найти и изменить имя свойства в шейдере издесь Как мне отбрасывать пиксели на основе цвета вершин и включать или выключать их в MonoBehaviour? , но пока ни один из них не работал для меня.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using HoloToolkit.Unity;
using System;
public class AnchorScript : MonoBehaviour
{
private Renderer rend;
Vector3 scale;
public WorldAnchorManager worldAnchorManager;
// Start is called before the first frame update
void Start()
{
rend = gameObject.GetComponent<Renderer>();
// transform.localScale = scale;
TurnOffContext();
}
private void Update()
{
SaveScale();
TurnOffContext();
}
public void AnchorIt()
{
worldAnchorManager.AttachAnchor(this.gameObject);
this.gameObject.GetComponent<Renderer>().material.color = Color.red;
}
public void ReleaseAnchor()
{
worldAnchorManager.RemoveAnchor(this.gameObject);
this.gameObject.GetComponent<Renderer>().material.color =
Color.green;
}
public void ShowDifferences()
{
gameObject.GetComponent<Renderer>().enabled = true;
}
public void HideAugmentations()
{
gameObject.GetComponent<Renderer>().enabled = false;
}
public void TurnOffContext()
{
rend.material.SetFloat("_Toggle", 1);
Debug.Log("Toggle ");
}
public void SaveScale()
{
scale = gameObject.GetComponent<Transform>().localScale;
}
}
Я ожидаю, что этот скриптзаставить синие части моего меша быть отброшенными, потому что во фрагменте моего шейдера у меня есть
clip(_Toggle * (0.5f - IN.vertColor.b));
В частности, часть, которая не работает, это строка
rend.material.Setfloat("_Toggle", 1);
вызван, но он не устанавливает значение _Toggle равным 1, как ожидалось.
Если я вручную изменю настройку _Toggle на панели инспектора с 0 на 1, синие части сетки отбрасываются, что является ожидаемым результатом.,Скрипт, который я вставил выше, должен иметь тот же результат, что и ручное изменение настроек на панели инспектора.