Hi I’ve looked at other answers similar to what I’m asking but i still need clarity on it.
How would you use a GUI slider to control say specular amount of a shader in game.
using UnityEngine;
using System.Collections;
public class ClickObject : MonoBehaviour {
Rect windowRect = new Rect(10, 20, 500,300 );
public bool canClick;
public GameObject cont;
//Toggle Booleans
bool toggleWindow;
bool toggleWindowTwo;
bool toggleWindowThree;
bool toggleWindowFour;
bool toggleWindowFive;
// Use this for initialization
void Start () {
canClick = false;
toggleWindow = false;
toggleWindowTwo = false;
}
void OnGUI ()
{
if(canClick)
{
ToggleWindows();
if(Input.GetMouseButtonUp(0))
{
Ray ray = camera.ScreenPointToRay(Input.mousePosition);
RaycastHit hit;
if(Physics.Raycast(ray,out hit) && hit.transform.tag == "Object")
{
Debug.Log("Open Lambert Shader Window");
toggleWindow = true;
}
else if(Physics.Raycast(ray,out hit) && hit.transform.tag == "Object2")
{
Debug.Log("Open Blinn Shader Window");
toggleWindowTwo = true;
}
}
}
else
{
toggleWindow = false;
toggleWindowTwo = false;
}
if(Input.GetKeyUp(KeyCode.Escape))
{
toggleWindow = false;
toggleWindowTwo = false;
}
}
void ToggleWindows ()
{
if(toggleWindow)
{
GUI.Window(0, windowRect, DoMyWindow, "My Window");
toggleWindowTwo = false;
}
else if(toggleWindowTwo)
{
GUI.Window(1, windowRect, DoMyWindowTwo, "My Window 2");
toggleWindow = false;
}
}
void DoMyWindow(int windowID)
{
float hSliderValue;
float hSliderValue2=1.0f;
float hSliderValue3=1.0f;
float hSliderValue4=1.0f;
float hSliderValue5=1.0f;
float hSliderValue6=1.0f;
float hSliderValue7=1.0f;
float hSliderValue8=1.0f;
float hSliderValue9=1.0f;
float hSliderValue10=1.0f;
float hSliderValue11=1.0f;
//gets the shader
// Animate the blend value
hSliderValue = cont.renderer.material.SetFloat( "_BaseColour", hSliderValue );
if (GUI.Button(new Rect(350, 30, 100, 20), "Shader 1"))
{
print("Tweak Values");
}
hSliderValue = GUI.HorizontalSlider (new Rect (25, 40, 100, 30), hSliderValue, 0.0f, 1.0f);
GUI.Label (new Rect (150, 35, 100, 30), "Base Colour");
hSliderValue2 = GUI.HorizontalSlider (new Rect (25, 60, 100, 30), hSliderValue2, 0.0f, 1.0f);
GUI.Label (new Rect (150, 55, 100, 30), "Subsurface");
hSliderValue3 = GUI.HorizontalSlider (new Rect (25, 80, 100, 30), hSliderValue3, 0.0f, 1.0f);
GUI.Label (new Rect (150, 75, 100, 30), "Metallic");
hSliderValue4 = GUI.HorizontalSlider (new Rect (25, 100, 100, 30), hSliderValue4, 0.0f, 1.0f);
GUI.Label (new Rect (150, 95, 100, 30), "Specular");
hSliderValue5 = GUI.HorizontalSlider (new Rect (25, 120, 100, 30), hSliderValue5, 0.0f, 1.0f);
GUI.Label (new Rect (150, 115, 100, 30), "Specular Tint");
hSliderValue6 = GUI.HorizontalSlider (new Rect (25, 140, 100, 30), hSliderValue6, 0.0f, 1.0f);
GUI.Label (new Rect (150, 135, 100, 30), "Roughness");
hSliderValue7 = GUI.HorizontalSlider (new Rect (25, 160, 100, 30), hSliderValue7, 0.0f, 1.0f);
GUI.Label (new Rect (150, 155, 100, 30), "Anisotropic");
hSliderValue8 = GUI.HorizontalSlider (new Rect (25, 180, 100, 30), hSliderValue8, 0.0f, 1.0f);
GUI.Label (new Rect (150, 175, 100, 30), "Sheen");
hSliderValue9 = GUI.HorizontalSlider (new Rect (25, 200, 100, 30), hSliderValue9, 0.0f, 1.0f);
GUI.Label (new Rect (150, 195, 100, 30), "Sheen Tint");
hSliderValue10 = GUI.HorizontalSlider (new Rect (25, 220, 100, 30), hSliderValue10, 0.0f, 1.0f);
GUI.Label (new Rect (150, 215, 100, 30), "Clearcoat");
hSliderValue11 = GUI.HorizontalSlider (new Rect (25, 240, 100, 30), hSliderValue11, 0.0f, 1.0f);
GUI.Label (new Rect (150, 235, 100, 30), "Clearcoat Gloss");
}
void DoMyWindowTwo(int windowID)
{
if (GUI.Button(new Rect(10, 20, 100, 20), "Shader 2")){
print("Tweak Values");
}
}
}