简体   繁体   English

如何统一使用 slider 使游戏对象透明

[英]how to make gameobject transparent using slider in unity

I am trying to make gameobject transparent using slider, but transparency could not work after writing the script.我正在尝试使用 slider 使游戏对象透明,但在编写脚本后透明度无法工作。 my shader setting is legacy standard/diffuse.我的着色器设置是旧版标准/漫反射。 so what changes should I make to this script?那么我应该对此脚本进行哪些更改? and also what setting I should make along with the script code.以及我应该与脚本代码一起进行什么设置。 please help me out to work with the script.请帮助我使用脚本。

 using System.Collections;
 using System.Collections.Generic;
 using UnityEngine;
 using UnityEngine.UI;

 public class TransparentObject : MonoBehaviour
{
   private GameObject objectTotransparent;
   public float alpha = 0.3f;
   //private float increaseAlpha;
   //private float decreaseAlpha;
   public Slider transparentSlider;
   //renderer attached to the object that you want to make transparent
   //public Renderer rend;
   private Material currentMat;


   /*void Awake()
  {
    transparentSlider.onValueChanged.AddListener(OnSliderChanged);
  }*/

void Start()
{
    //objectTotransparent = gameObject;
    //currentMat = objectTotransparent.GetComponent<Renderer>().material;
    AsistantControllScript = FindObjectOfType<AsistantControll>();

   currentMat = currentGameObject.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)
{
    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);
}

public void Deselect()
{
    objectTotransparent.GetComponent<Recolour>().SetOriginalMaterial();
    objectTotransparent = null;
    transparentSlider.value = alpha;
} 
}

Change your material Rendering Mode into Transparent :将您的材质Rendering Mode更改为Transparent

渲染模式

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM