You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
107 lines
3.5 KiB
C#
107 lines
3.5 KiB
C#
|
3 years ago
|
using UnityEngine;
|
||
|
|
using System.Collections;
|
||
|
|
|
||
|
|
public enum Position{
|
||
|
|
Middle,
|
||
|
|
Bottom,
|
||
|
|
Bottom02
|
||
|
|
}
|
||
|
|
|
||
|
|
public class DemoGUI : MonoBehaviour {
|
||
|
|
|
||
|
|
public Texture HUETexture;
|
||
|
|
public Material mat;
|
||
|
|
public Position[] Positions;
|
||
|
|
public GameObject[] Prefabs;
|
||
|
|
|
||
|
|
private int currentNomber;
|
||
|
|
private GameObject currentInstance;
|
||
|
|
private GUIStyle guiStyleHeader = new GUIStyle();
|
||
|
|
private float colorHUE;
|
||
|
|
float dpiScale;
|
||
|
|
|
||
|
|
// Use this for initialization
|
||
|
|
void Start () {
|
||
|
|
|
||
|
|
if(Screen.dpi < 1) dpiScale = 1;
|
||
|
|
if(Screen.dpi < 200) dpiScale = 1;
|
||
|
|
else dpiScale = Screen.dpi / 200f;
|
||
|
|
guiStyleHeader.fontSize = (int)(15f*dpiScale);
|
||
|
|
guiStyleHeader.normal.textColor = new Color(1,1,1);
|
||
|
|
currentInstance = Instantiate(Prefabs[currentNomber], transform.position, new Quaternion()) as GameObject;
|
||
|
|
|
||
|
|
//var reactivator = currentInstance.AddComponent<DemoReactivator>();
|
||
|
|
//reactivator.TimeDelayToReactivate = 3f;
|
||
|
|
//int n = 0;
|
||
|
|
//for (int i=0; i<7; i++)
|
||
|
|
// for (int j = 0; j<7; j++)
|
||
|
|
// {
|
||
|
|
//var pos = transform.position;
|
||
|
|
//var offset = new Vector3(i*2, 0, j*2);
|
||
|
|
//pos = pos - new Vector3(7, 0, 7) + offset;
|
||
|
|
|
||
|
|
///if(n < Prefabs.Length) Instantiate(Prefabs[n], pos, new Quaternion());
|
||
|
|
//n++;
|
||
|
|
//}
|
||
|
|
}
|
||
|
|
|
||
|
|
private void OnGUI()
|
||
|
|
{
|
||
|
|
if (GUI.Button(new Rect(10*dpiScale, 15*dpiScale, 105*dpiScale, 30*dpiScale), "Previous Effect")) {
|
||
|
|
ChangeCurrent(-1);
|
||
|
|
}
|
||
|
|
if (GUI.Button(new Rect(130*dpiScale, 15*dpiScale, 105*dpiScale, 30*dpiScale), "Next Effect"))
|
||
|
|
{
|
||
|
|
ChangeCurrent(+1);
|
||
|
|
}
|
||
|
|
GUI.Label(new Rect(300*dpiScale, 15*dpiScale, 100*dpiScale, 20*dpiScale), "Prefab name is \"" + Prefabs[currentNomber].name + "\" \r\nHold any mouse button that would move the camera", guiStyleHeader);
|
||
|
|
|
||
|
|
GUI.DrawTexture(new Rect(12*dpiScale, 80*dpiScale, 220*dpiScale, 15*dpiScale), HUETexture, ScaleMode.StretchToFill, false, 0);
|
||
|
|
float oldColorHUE = colorHUE;
|
||
|
|
colorHUE = GUI.HorizontalSlider(new Rect(12*dpiScale, 105*dpiScale, 220*dpiScale, 15*dpiScale), colorHUE, 0, 255*6);
|
||
|
|
if(Mathf.Abs(oldColorHUE - colorHUE) > 0.001) ChangeColor();
|
||
|
|
GUI.Label(new Rect(240*dpiScale, 105*dpiScale, 30*dpiScale, 30*dpiScale), "Effect color", guiStyleHeader);
|
||
|
|
}
|
||
|
|
|
||
|
|
void ChangeColor()
|
||
|
|
{ var color = Hue (colorHUE/255f);
|
||
|
|
var rend = currentInstance.GetComponentsInChildren<Renderer>();
|
||
|
|
foreach (var r in rend) {
|
||
|
|
var mat = r.material;
|
||
|
|
if(mat==null || !mat.HasProperty("_TintColor")) continue;
|
||
|
|
var oldColor = mat.GetColor("_TintColor");
|
||
|
|
color.a = oldColor.a;
|
||
|
|
mat.SetColor("_TintColor", color);
|
||
|
|
}
|
||
|
|
var light = currentInstance.GetComponentInChildren<Light>();
|
||
|
|
if(light!=null) light.color = color;
|
||
|
|
}
|
||
|
|
|
||
|
|
Color Hue(float H)
|
||
|
|
{
|
||
|
|
Color col = new Color(1, 0, 0);
|
||
|
|
if(H>=0 && H<1) col = new Color(1, 0, H);
|
||
|
|
if(H>=1 && H<2) col = new Color(2-H, 0, 1);
|
||
|
|
if(H>=2 && H<3) col = new Color(0, H-2, 1);
|
||
|
|
if(H>=3 && H<4) col = new Color(0, 1, 4-H);
|
||
|
|
if(H>=4 && H<5) col = new Color(H-4, 1, 0);
|
||
|
|
if(H>=5 && H<6) col = new Color(1, 6-H, 0);
|
||
|
|
return col;
|
||
|
|
}
|
||
|
|
// Update is called once per frame
|
||
|
|
void ChangeCurrent(int delta) {
|
||
|
|
currentNomber+=delta;
|
||
|
|
if (currentNomber> Prefabs.Length - 1)
|
||
|
|
currentNomber = 0;
|
||
|
|
else if (currentNomber < 0)
|
||
|
|
currentNomber = Prefabs.Length - 1;
|
||
|
|
if(currentInstance!=null) Destroy(currentInstance);
|
||
|
|
var pos = transform.position;
|
||
|
|
if(Positions[currentNomber]==Position.Bottom) pos.y-=1;
|
||
|
|
if(Positions[currentNomber]==Position.Bottom02) pos.y-=0.8f;
|
||
|
|
currentInstance = Instantiate(Prefabs[currentNomber], pos, new Quaternion()) as GameObject;
|
||
|
|
//var reactivator = currentInstance.AddComponent<DemoReactivator>();
|
||
|
|
//reactivator.TimeDelayToReactivate = 1.5f;
|
||
|
|
}
|
||
|
|
}
|