(一)基础设置ide
拖入资源库中的“银河”材质球,设置放大参数,使相机包裹其中;this
设置Canvas分辨率为1920*1080,RenderMode选为世界空间;调整位置,视图以下所示。编码
(二)场景选择设置须要设置一个面片,position(0,0,-2000),设置一个空物体(0,0,0),将面片做为空物体的子物体。将GameItem做为预制体,使用代码自动生成。spa
在游戏运行时,在GameItemSpan下生成GameItem,定义一个Material[],每次选择旋转的角度private float m_Angle;code
using System.Collections; using System.Collections.Generic; using UnityEngine; using DG.Tweening; public class GameItemSelect : MonoBehaviour { public static GameItemSelect _Instance;
public Material[] m_gameItemMatArr; public GameObject go_GameItem; private float m_Angle; public int Index = 0; private void Awake() { _Instance = this; m_Angle = 360.0f / m_gameItemMatArr.Length; for (int i = 0; i < m_gameItemMatArr.Length; i++) { GameObject go = Instantiate(go_GameItem, transform); go.transform.localEulerAngles = new Vector3(0, i * m_Angle, 0); go.GetComponentInChildren<MeshRenderer>().material = m_gameItemMatArr[i]; go.GetComponentInChildren<GameItem>().SetVideoName(m_gameItemMatArr[i].name); go.GetComponentInChildren<GameItem>().Index = i; } } public void RotateForWord() { Index++; if (Index >= m_gameItemMatArr.Length) { Index = 0; } transform.DORotate(new Vector3(0, -Index * m_Angle, 0), 0.3f); } public void RotateBack() { Index--; if (Index < 0) { Index = m_gameItemMatArr.Length - 1; } transform.DORotate(new Vector3(0, -Index * m_Angle, 0), 0.3f); } }
(三)使用DOTwing实现游乐项目切换orm
transform.DORotate(new Vector3(0, -Index * m_Angle, 0), 0.3f);
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class GameItemPanel : MonoBehaviour { private Button btn_Forword; private Button btn_Back; private Button btn_Select; private Text txt_Title; private string[] m_GameItemNameArr; private void Awake() { ReadGameItemNameText(); Init(); } private void Update() { txt_Title.text = m_GameItemNameArr[GameItemSelect._Instance.Index]; } private void ReadGameItemNameText() { TextAsset textAsset= Resources.Load < TextAsset >( "游乐项目名字"); m_GameItemNameArr = textAsset.text.Split('\n'); } private void Init() { txt_Title = transform.Find("txt_Title").GetComponent<Text>(); btn_Forword = transform.Find("btn_forward").GetComponent<Button>(); btn_Forword.onClick.AddListener(() => { GameItemSelect._Instance.RotateForWord(); }); btn_Back = transform.Find("btn_back").GetComponent<Button>(); btn_Back.onClick.AddListener(() => { GameItemSelect._Instance.RotateBack(); }); btn_Select = transform.Find("btn_select").GetComponent<Button>(); btn_Select.onClick.AddListener(() => { LoadingPanel._instance.LoadScene(); }); } }
(4)项目名称的展现blog
新建”游乐项目”文档,顺序与材质球的顺序一致。文档的编码为“UTF_8”,文件放在Resous文件夹中
private void ReadGameItemNameText()
{
TextAsset textAsset= Resources.Load < TextAsset >( "游乐项目名字"); m_GameItemNameArr = textAsset.text.Split('\n'); }
TextAsset为文本资源,Split()方法为切割;