Unity3D-塔防遊戲專案主要原始碼(遊戲UI介面控制器指令碼)
阿新 • • 發佈:2019-02-13
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
using UnityEngine.EventSystems;
namespace TowerDefenceTemplate
{
public class UI_Controller : MonoBehaviour
{
private GameManager gameManager;//例項化遊戲管理器的物件
public EventSystem _eventSystem;//例項化事件系統
public Image EnemiesIcon;//例項化Image物件
public RectTransform
BaseHealthBar,//血條位置
TowerControl;//防禦塔控制器的位置
public Button
ToMenuButton,//返回選單的按鈕
RestartButton;//重新開始的按鈕
public GameObject
RightPanel,//右側選單
PauseMenu,//暫停選單
ContinueButton,//繼續遊戲的按鈕
InGameButtons,//遊戲執行中的按鈕
UpgradeButton;//升級的按鈕
public Text
MoneyMessage,//錢幣提示資訊
MoneyText,//當前的錢幣數
WaveNumber,//當前的波數
WaveTimer,//下一波等待時間
EnemiesLeftText,//剩下的敵機數量
UpgradeButtonText,//升級按鈕的文字
SellButtonText,//賣塔按鈕的文字
LevelText,//塔等級的文字
RangeText,//塔偵測範圍文字
DamageText,//塔傷害值
NameText,//塔的名字
WaveUpperNumber;//顯示的波次資訊文字
void Awake()
{
gameManager = FindObjectOfType<GameManager>();//獲取指令碼
if (gameManager == null)
{
Debug.LogError("GameManager not found!");
enabled = false;
return;
}
SendInstances();
}
void SendInstances()//將UGUI面板上的資料傳回遊戲控制器內
{
gameManager._UI_Controller = this;
gameManager.MoneyMessage = MoneyMessage;
gameManager.MoneyText = MoneyText;
gameManager.BaseHealthBar = BaseHealthBar;
gameManager.WaveNumber = WaveNumber;
gameManager.EnemiesLeftText = EnemiesLeftText;
gameManager.WaveTimer = WaveTimer;
gameManager.ToMenuButton = ToMenuButton;
gameManager.RestartButton = RestartButton;
gameManager.EnemiesIcon = EnemiesIcon;
gameManager.NameText = NameText;
gameManager.DamageText = DamageText;
gameManager.RangeText = RangeText;
gameManager.LevelText = LevelText;
gameManager.UpgradeButtonText = UpgradeButtonText;
gameManager.SellButtonText = SellButtonText;
gameManager.RightPanel = RightPanel;
gameManager.WaveUpperNumber = WaveUpperNumber;
gameManager.PauseMenu = PauseMenu;
gameManager.UpgradeButton = UpgradeButton;
}
public void GameEnd()//遊戲結束
{
InGameButtons.SetActive(false);//遊戲中的按鈕失活
WaveNumber.gameObject.SetActive(true);//波數提示
ContinueButton.SetActive(false);//繼續遊戲按鈕失活
PauseMenuShow();//暫停,展示右側選單
}
public void CreateTower(string type)//建立塔
{
if (gameManager == null)
{
return;
}
gameManager.BuildingModeOn(type);//建立塔的模型
}
public void PauseMenuShow()//暫停,啟用右側選單
{
Pause();
PauseMenu.SetActive(true);
}
public void Pause()//暫停
{
if (gameManager == null)
{
return;
}
gameManager.Pause();//遊戲時間停止
gameManager.TankSound.mute = true;
gameManager.PlaneSound.mute = true;
gameManager.JeepSound.mute = true;
}
public void Play()//開始
{
if (gameManager == null)
{
return;
}
gameManager.UnPause();//解開時間速度,變為正常值
PauseMenu.SetActive(false);//右側選單失活
gameManager.TankSound.mute = false;
gameManager.PlaneSound.mute = false;
gameManager.JeepSound.mute = false;
}
public void Fast()//加速
{
if (gameManager == null)
{
return;
}
PauseMenu.SetActive(false);//右側選單失活
gameManager.Fast();//遊戲時間加速
}
public void UpgradeTower()//塔升級
{
gameManager.UpgradeTower();
}
public void SellTower()//賣塔
{
gameManager.SellTower();
}
public void BackToMenu()//返回主選單
{
if (gameManager == null)
{
return;
}
gameManager.BackToMenu();
}
public void RestartLevel()//重新開始
{
if (gameManager == null)
{
return;
}
Play();
gameManager.RestartLevel();
}
public void Exit()
{
Application.Quit();
}
}
}