[英]Make 3d gameobject object transparent using slider in unity
我正在尝试使用 slider 使多个 object 透明,但不是同时。 什么意思,意思是选择的object应该可以有透明的阴影。 我已经为它写了一个代码。 但是我需要帮助来识别我的错误或纠正我在代码中的错误。 代码:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class TransparentObject : MonoBehaviour
{
private GameObject objectTotransparent;
public float alpha = 0.5f;
private Material currentMat;
public Slider transparentSlider;
void Awake()
{
transparentSlider.onValueChanged.AddListener(OnSliderChanged);
}
//void Start()
//{
//objectTotransparent = gameObject;
//currentMat = objectTotransparent.GetComponent<Renderer>().material;
//}
void Update()
{
//ChangeAlpha(currentMat, alpha);
Touch touch = Input.GetTouch(0);
if (touch.phase == TouchPhase.Began)
{
Ray ray = Camera.current.ScreenPointToRay(touch.position);
RaycastHit hitObject;
if (Physics.Raycast(ray, out hitObject))
{
objectTotransparent = hitObject.transform.parent.transform.parent.gameObject;
objectTotransparent.GetComponent<Recolour>().SetSelected();
}
}
}
/*void ChangeAlpha(Material mat, float alphaVal)
{
}*/
void OnSliderChanged(float alphaVal)
{
//ChangeAlpha(currentMat, transparentSlider.value);
//Color oldColor = mat.color;
//Color newColor = new Color(oldColor.r, oldColor.g, oldColor.b, alphaVal);
//mat.SetColor("_Color", newColor);
transparentSlider = GUI.HorizontalSlider( Rect(20,135,175,30), transparentSlider, 1, 0);
renderer.material.color.a = transparentSlider;
}
public void Deselect()
{
objectTotransparent.GetComponent<Recolour>().SetOriginalMaterial();
objectTotransparent = null;
transparentSlider.value = alpha;
}
}
在OnSliderChanged
方法中,尝试将 alpha 分量设置为transparentSlider.value
而不是 Slider object。 以下是您应该如何在一个简单的脚本中更改 object 的透明度:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class ChangeTransparency : MonoBehaviour
{
//renderer attached to the object that you want to make transparent
public Renderer rend;
//ui slider that you want to use to controll the transparency
public Slider slider;
private void Update()
{
rend.material.color = new Color(
rend.material.color.r,
rend.material.color.g,
rend.material.color.b,
slider.value
);
}
}
注意:应用于 object 的要使其透明的材料应将其渲染模式设置为透明:
现在您可以更改反照率和所有其他参数来模仿您的原始材质。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.