Unity UGUI implementa una interfaz de selección de nivel de juego
Esta es la interfaz jerárquica después de la operación. El elemento inferior se coloca donde la cámara no puede capturarlo. Como ajuste preestablecido, cada elemento tiene un componente de alternancia y un componente de grupo de alternancia en la cuadrícula. El grupo en el componente de alternancia en el elemento está configurado en Cuadrícula, de modo que después de hacer clic en uno, los demás no se resaltarán. Hay un grupo de diseño de cuadrícula de componentes en la cuadrícula, que implementa el diseño automático al crear un proyecto y configurar el objeto principal en la cuadrícula.
Aquí, necesitamos escribir tres clases, una es nuestra propia clase de datos ficticios, otra es una clase que obtiene varias UI en el proyecto y la otra es una clase que puede crear y administrar proyectos.
Clase pública ItemData//Esta clase almacena datos.
{
public int _ starNum//El número de estrellas (estoy buscando estrellas, así que me las arreglaré ahora)
Cadena pública _ icon //Este es el nombre de la imagen
Cadena pública _ itemName//El nombre del punto de control
cadena pública _ itemNum//¿Qué nivel?
}
La clase de este elemento se utiliza para obtener los controles de la interfaz de usuario de este elemento.
Proyecto público: MonoBehaviour
{?
Imagen pública_ star 1;?
¿Imagen pública_ star2?
¿Imagen pública_ star3?
Imagen_icon pública;?
Núm_nivel_texto público?
¿Nombre del nivel_texto público?
¿Anular el artículo inicializado()?
{ ?
_star1 = Conversión. Buscar("Grupo Estrella/estrella1 "). GetComponent & ltImage & gt();
? _star2=conversión. Buscar("Grupo Estrella/estrella2 "). GetComponent<Image>();?
_star3 =Convertir. Buscar("Grupo Estrella/estrella3 "). GetComponent & ltImage & gt();
? _icon=conversión. buscar("icono"). GetComponent<Image>();?
_levelName = transformar. Buscar("nombre de nivel/nombre"). GetComponent<Text>();?
_levelNum = Conversión. Buscar("Nombre de nivel/Lv "). GetComponent & ltText & gt();
}
void Awake()
{
inicializar elemento();
}
}
Esta es una clase que gestiona la creación de proyectos.
Clase pública MainMgr: ¿MonoBehaviour?
{?
Elemento objeto del juego;?
Transform parent; //Necesitamos obtener la transformación de la grilla.
List<ItemData>dataGroup=new List<ItemData>();
¿void Awake()?
{ ?
CrearDatos();?
item=conversión. buscar("proyecto"). Objeto del juego; // Coloca el objeto del juego fuera de la cámara al principio como cuerpo predeterminado.
Padre=convertir.
Find("grid"); //Guarda la transformación de la grilla.
}?
Void CreateData() //Crea tus propios datos ficticios.
{
? grupo de datos. clear(); //Asegúrate de que no haya otros datos en esta lista.
ItemData ItemData = nuevo ItemData();?
datos del artículo. _ icono = " 1(5)";
Datos del artículo. _ itemName = " arboleda?
Itemdata._itemNum = "Primer nivel";?
itemdata._ star num = 3;?
Grupo de datos. agregar (datos del artículo);?
datos del artículo 1 = nuevos datos del artículo();?
datos del artículo1
datos del artículo1. >
? Datos del artículo1. _itemNum = "Segundo nivel";?
datos del artículo1. _ número de estrella = 1;?
Grupo de datos. agregar (datos del artículo 1);?
datos del artículo datos del artículo 2 = nuevos datos del artículo();?
Datos del proyecto 2. _ icono = "1(15)";?
Datos del proyecto 2. _itemName = "Shanhaiguan";?
Datos del proyecto 2. _itemNum = "Tercer nivel";
Datos del artículo 2. _ número de estrella = 1;?
Grupo de datos. agregar (datos del artículo 2);?
datos del artículo datos del artículo 3 = nuevos datos del artículo();?
datos del artículo3. _ icono = "1(12)";?
Datos del artículo3. _itemName = "Cementerio";?
Datos del artículo3. _ itemNum = "¿Nivel 4?
itemdata3._ star num = 2;?
Grupo de datos. add(item data 3);
?item data datos del artículo 4 = nuevos datos del artículo();
Datos del artículo 4. _ icon = "1(32)"
Datos del artículo 4. /p>
? Datos del proyecto 4. _ itemNum = " nivel 5
?Datos del artículo 4. _ star num = 3;?
Grupo de datos. add(datos del artículo 4);?
datos del artículo datos del artículo 5 = nuevos datos del artículo();
Datos del artículo 5. _ icon = "1(25)"
Datos del artículo 5. ";?
Datos del artículo 5._ itemNum = "nivel 6?
Datos del proyecto 5. _ número de estrella = 2;?
Grupo de datos. agregar (datos del artículo 5);?
datos del artículo datos del artículo 6 = nuevos datos del artículo();?
Datos del proyecto 6. _ icono = "1(30)";?
Datos del proyecto 6. _ itemName = " ¿demonios?
Datos del artículo 6.
_ itemNum = " nivel 7?
Datos del artículo 6. _ star num = 3;?
Grupo de datos. add(datos del artículo 6);
? }?
GameObject tempItem//Crear un objeto de juego temporal
Void CreateTempItem() //Crear un elemento
{ ?
if (dataGroup!= null)? //Cuando esta lista no está vacía
{ ?
for(int I = 0; i<dataGroup. count; I++) //Bucle para crear items
{ ?
tempItem = ¿Crear una instancia (elemento) como GameObject? //¿Crear un elemento y obtener este objeto de juego
? posición local = vector 3. //Inicializa su posición, tamaño de escala y ángulo de rotación.
elemento temporal. .transform .local scale = vector 3 .one;?
elemento temporal .set Parent(Parent); //Establece su objeto principal en Grid >
Item itemSprite = tempItem. (); //Agregar script para cada elemento creado.
itemSprite.text = dataGroup[i]. text = dataGroup[i]. _ itemNum
Formato de cadena("Icon/{0 } ", grupo de datos[i]._icon);//Concatenación de cadenas
itemSprite._icon .sprite = Recursos. (ruta, tipo de (Sprite)) como Sprite;
ShowStar(data group[i]._starNum, items prite); //Llama a este método para obtener la visualización de estrellas.
}
}
}
Estrella de visualización nula (int num, item tempitem)//Este método se utiliza para mostrar. estrellas.
{
if (núm == 1)
{
tempitem. _ estrella 1. objeto del juego. set active(true);
tempitem. _ estrella 2. objeto del juego. conjunto activo (falso);
tempitem. _ estrella 3 objeto del juego. set active(false);
}
if (cantidad == 2)
{
Artículo temporal. _ estrella 1. objeto del juego. set active(true);
tempitem. _ estrella 2. objeto del juego. set active(true);
tempitem.
_ estrella 3 objeto del juego. set active(false);
}
if (cantidad == 3)
{
Artículo temporal. _ estrella 1. objeto del juego. set active(true);
tempitem. _ estrella 2. objeto del juego. set active(true);
tempitem. _ star 3 objeto del juego . set active(true);
}
}
void Start () {
CreateTempItem( );
}
}
Lo anterior es la implementación de una interfaz simple de selección de nivel de juego. Si hay algún error o una forma mejor, corríjame. ¡Muchas gracias!