三、功能的具体实现
这里只介绍部分主要功能以及一些核心代码,其他细节可自行设计
1. 开始游戏场景:
开始游戏点击开始按钮,调用Gamanager里的公开方法,运行开始面板的动画(这里用的是DoTween插件)并播放声音即可
public void OnStartGameButton()
{
startGamePanelTween.DOPlayForward();
clickAudioSource.PlayOneShot(clickClip);
}
游戏选项通过Slider的value来控制AudioSource的volume;通过正则表达式来验证玩家名字是否合法;通过QualitySettings.SetQualityLevel(int level)方法来调节画质
查看排行榜我这里建了一个单链表用来表示玩家信息(名字;分数),通过单链表里的排序方法(简单的冒泡排序表)对玩家进行排名,并将排名信息填充到排行榜的预制件单元中。而对于玩家信息的存储则通过PlayerPrefab实现,他存储了string类型字符串,通过对字符串的分割实现了玩家信息的获取。
单链表接口:
public interface IListDS
{
void Sort();//排序
void Add(T item1,T item2);//添加信息
bool CheckIsNeedToAdd(T item1,T item2);//检查该信息是否能被添加
Node<T> this[int index] { get; set; }//索引器实现
}
玩家信息存储以及获取:
void CreateRecordBoard()
{
//PlayerPrefs.SetString("unitData", "");
string strData = PlayerPrefs.GetString("unitData");
if (strData.CompareTo("") == 0)//初始化玩家信息
{
strData = "暗夜之鸦,39886;暴躁的恐角龙,8944;士兵76,22000;闪光萨,15886;死亡之翼,6532;YoungForever,9876";
PlayerPrefs.SetString("unitData", strData);
}
string[] firstSplitStr = strData.Split(';');
for (int i = 0; i < firstSplitStr.Length; i++)//分割字符串
{
string[] secodnSplitStr = firstSplitStr[i].Split(',');
if (secodnSplitStr[0] == "")
{
continue;
}
CreateCell(secodnSplitStr[0], secodnSplitStr[1]);//将玩家信息存储在排行榜的预制件单元里面
}
}
退出游戏退出游戏只需一句代码即可
public void OnExitGame()
{
clickAudioSource.PlayOneShot(clickClip);
Application.Quit();
}
2. 第一(三)关场景:
虚拟摇杆控制移动的实现:
[SerializeField]
private EasyJoystick joys; void PlayerMove()
{
if (Gamanager.isOver || Gamanager.isPause)//如果游戏出于暂停状态或结束状态,则不进行移动
{