Saludos amigos.
Os traigo un videotutorial de como crear un menú deslizable con unos plano, en este caso, para un menú de armas pero aplicable a cualquier tipo de menú.
En el primer vídeo, veremos como se crea la escena desde cero.
Crearemos los objetos necesarios y configuraremos los parámetros de los Scripts.
Veremos como crear los planos que albergarán nuestras texturas, crearemos Prefabs y configuraremos una cámara para que muestre solo nuestra GUI.
#pragma strict
//SliderCNT.js
var prefabPlanoSlider : GameObject;
var CNTslider :GameObject;
var PosSlider : Vector3;
var CNTarmas :GameObject;
var offsetSlider : float;
private var menuArmas : boolean = false;
private var numTexturas : int;
var texturasArmas : Texture2D [];
var ratioMenu : float = 0.5;
private var nextRatioMenu : float = 0.0;
function Update () {
if(Input.GetKeyDown (KeyCode.M) && Time.time > nextRatioMenu){
nextRatioMenu = Time.time + ratioMenu;
SwitchMenuArmas ();
}
CNT ();
Limites ();
RecargaMenuArmas ();
IluminaPlano ();
}
function OnGUI () {
if(menuArmas){
GUI.BeginGroup (new Rect (Screen.width / 2 - 55,Screen.height - 190,110,80));
GUI.Box (new Rect (0,0,110,60),"");
if (GUI.Button(Rect(0,20,55,20),"-")){
numTexturas--;
if(numTexturas >= 0){
CNTslider.transform.position.x += offsetSlider;
}
}
if (GUI.Button(Rect(55,20,55,20),"+")){
numTexturas++;
if(numTexturas <= texturasArmas.Length-1){
CNTslider.transform.position.x -= offsetSlider;
}
}
if (GUI.Button(Rect(0,40,55,20),"<<")){
numTexturas = 0;
CNTslider.transform.position.x = 0;
}
if (GUI.Button(Rect(55,40,55,20),">>")){
numTexturas = texturasArmas.Length-1;
CNTslider.transform.position.x = 0;
CNTslider.transform.position.x -= (texturasArmas.Length-1)*offsetSlider;
}
if (GUI.Button(Rect(0,60,110,20),"Seleccionar")){
ArmasCNT.armaActiva = numTexturas;
}
GUI.Box (new Rect (0,0,110,20),"Textura " + (numTexturas+1));
GUI.EndGroup ();
}
}
function SwitchMenuArmas () {
if(menuArmas){
menuArmas = false;
CierraMenuArmas ();
}else{
menuArmas = true;
CreaSliderMenuArmas ();
}
}
function CNT () {
if(CNTarmas != null){
var armas : ArmasCNT = CNTarmas.GetComponent("ArmasCNT");
texturasArmas = armas.texturasArmas;
}
}
private var objSlidersTexturas : GameObject[];
function CreaSliderMenuArmas () {
objSlidersTexturas = new GameObject[texturasArmas.Length];
if(menuArmas){
CNTslider.transform.position.x = 0;
for(var i : int =0;i < texturasArmas.Length;i++){
var clon : GameObject = Instantiate (prefabPlanoSlider,
Vector3(PosSlider.x+(offsetSlider*i),PosSlider.y,PosSlider.z),
Quaternion.Euler (90, 180, 0));
clon.renderer.material.mainTexture = texturasArmas[i];
clon.transform.parent = CNTslider.transform;
//clon.AddComponent("PlanoSlider");
//DaId (clon, i);
objSlidersTexturas[i] = clon;
clon.name = "Textura"+i;
}
}
}
function CierraMenuArmas () {
for(var i : int = 0;i < objSlidersTexturas.Length;i++){
Destroy (objSlidersTexturas[i]);
}
CNTslider.transform.position.x = 0;
}
function RecargaMenuArmas () {
if(menuArmas && texturasArmas.Length != objSlidersTexturas.Length){
CierraMenuArmas ();
CreaSliderMenuArmas ();
}
}
function Limites () {
if (numTexturas < 0){
numTexturas = 0;
}
if (numTexturas > texturasArmas.Length-1){
numTexturas = texturasArmas.Length-1;
}
}
function DaId (clon : GameObject, num : int) {
var script : PlanoSlider = clon.GetComponent("PlanoSlider");
script.idArma = num;
}
var colorOriginal : Color = Color.white;
var colorOver : Color = Color.green;
function IluminaPlano () {
if(menuArmas){
for(var i : int = 0;i < objSlidersTexturas.Length;i++){
if(objSlidersTexturas[i] == objSlidersTexturas[numTexturas]){
objSlidersTexturas[i].renderer.material.color = colorOver;
}else{
objSlidersTexturas[i].renderer.material.color = colorOriginal;
}
}
}
}
#pragma strict
//ArmasCNT.js
var texturasArmas : Texture2D [];
static var armaActiva : int;
var espejoArmaActiva : int; // Variable para ver en el inspector "BORRAR"
function Update () {
espejoArmaActiva = armaActiva; // Variable para ver en el inspector "BORRAR"
}
gracias :D
ResponderEliminar