c# - 我需要通过滑块改变对象的透明度
问题描述
我有这个脚本来更改最初关闭的对象的透明度,当我单击打开它的按钮时,它的克隆出现......但是当我打开这个对象时,我无法更改透明度。 ..统一没有错误,只是没有透明度变化......
public class ChangeOpacity : MonoBehaviour
{
public GameObject currentGameObject;
private AsistantControll AsistantControllScript;
public float alpha = 0.5f;//half transparency
//Get current material
private Material currentMat;
// Start is called before the first frame update
void Start()
{
AsistantControllScript = FindObjectOfType<AsistantControll>();
currentMat = currentGameObject.GetComponent<Renderer>().material;
}
// Update is called once per frame
void Update()
{
}
void ChangeAlpha(Material mat, float alphaVal)
{
Color oldColor = mat.color;
Color newColor = new Color(oldColor.r, oldColor.g, oldColor.b, alphaVal);
mat.SetColor("_Color", newColor);
}
public void ChangeAlphaOnValue(Slider slider)
{
ChangeAlpha(currentMat, slider.value);
}
}
解决方案
您的代码中有些地方有问题,或者您没有编写所有代码。
从哪里调用您的 ChangeAlphaValue 方法?什么滑块在参数中传递给它?
您应该在脚本中添加滑块的序列化字段并在检查器中引用它。
[SerializeField] private Slider m_slider = null;
void Start()
{
...
m_slider.onValueChanged.AddListener(ChangeAlphaOnValue);
}
void OnDestroy()
{
m_slider.onValueChanged.RemoveListener(ChangeAlphaOnValue);
}
public void ChangeAlphaOnValue(float value)
{
ChangeAlpha(currentMat, value);
}
使用该代码,只要您的滑块更改值(当您在运行时拖动它或通过代码设置它时),就会调用您的 ChangeAlphaOnValue。
推荐阅读
- javascript - 如何在 HTML 表格中显示此 XML 数据?
- mysql - 多张表查询累计和
- c# - 如何从另一个脚本 C# 更改布尔值
- django-models - 如何在 Wagtail 的侧面菜单部分中生成页面列表?
- c# - 输入对于 RSA 密码来说太大 - 我需要一个可用的内存中替代 openssl cms 解密
- docker - 如何根据内存使用情况监控和重新启动在 Docker 中运行的应用程序?
- python - How to create a custom exception?
- plugins - 如何通过下拉列表中的选定选项显示 componentProperties 选项?
- php - 为什么这个函数返回空数据?
- laravel - 如何在不同的命名约定上使用 laravel 进行预加载