Unity版本:
Unity4.3.2f1
開發語言:
C#
1.肯定一下此次要實現的內容:
此次主要是要實現一個第一人稱的射擊類遊戲,整個遊戲場景裏面有
主角、幾個怪物、藥箱、子彈,相似CS.
2.先把要作的內容羅列出來:
- 菜單頁面
-
- 遊戲界面
-
- 第一人稱視覺實現
- 主角射擊
- 血量管理
- 藥箱補血
- 怪物動畫製做實現
- 怪物AI實現
-
3.首先製做菜單頁面
打開Unity -> 建立項目UnityStudy:暫時還不須要導入什麼包 -> 點擊create後Unity重啓建立好咱們的項目
調整開發界面,在Unity界面的右上角有個Layout的按鈕,點開選中2 by 3:
在Project的Assets裏面建立兩個文件夾:
在src目錄裏面建立:
文件GameState:狀態類,用於標記遊戲的狀態
public class GameState{
public const int GAME_MENU = 1; //菜單頁面
public const int GAME_START = 2;//遊戲開始
public const int GAME_END = 3;//遊戲結束
public const int GAME_QUIT = 4;//遊戲退出
}
文件SceneController:這個文件主要是用來控制整個遊戲的場景切換。
使用狀態來控制場景描繪內容。
//當前遊戲狀態爲菜單頁面
//之因此用定義爲靜態,主要是爲了後面的代碼分離,其餘的類能夠
//修改遊戲狀態
public static int currentGameState;
//上一次的遊戲狀態
//避免在update的時候重複調用遊戲內容
private int preGameState = -1;
//菜單界面背景貼圖
public Texture2D gameMenuBg;
//菜單界面
private GameMenu gameMenu;
// Use this for initialization
void Start () {
currentGameState = GameState.GAME_MENU;
}
void OnGUI()
{
switch(currentGameState)
{
case GameState.GAME_MENU:
//在這裏必需要說明
//在類GameMenu.drawGameSelectPanel();裏面使用了GUI類
//若是把該方法放在OnGUI方法以外,會出現錯誤空指針對象:
//NullReferenceException: Object reference not set to an instance of an object
if (null == gameMenu)
{
gameMenu = new GameMenu();
}
//描繪背景
gameMenuBg = gameMenu.renderSelectGameBg(gameMenuBg);
//製做按鈕
gameMenu.drawGameSelectPanel();
break;
case GameState.GAME_START:
break;
case GameState.GAME_END:
break;
case GameState.GAME_QUIT:
break;
default:
Debug.Log("未知狀態錯誤 state="+currentGameState);
break;
}
}
文件GameMenu:這個類主要是用來描繪菜單界面,包括背景以及兩個按鈕。
public Texture2D renderSelectGameBg(Texture2D selectGameBg)
{
Texture2D copy = selectGameBg;
//把貼圖的起始點放在(0,0),並設置它的寬高是場景的寬高
GUI.DrawTexture(new Rect(0, 0, Screen.width, Screen.height), copy);
return copy;
}
public void drawGameSelectPanel()
{
if (GUI.Button(new Rect((Screen.width - 100) * 0.5f, (Screen.height - 100) * 0.5f, 100, 30), "進入遊戲"))
{
SceneController.currentGameState = GameState.GAME_START;
}
if (GUI.Button(new Rect((Screen.width - 100) * 0.5f, (Screen.height - 30) * 0.5f, 100, 30), "退出遊戲"))
{
SceneController.currentGameState = GameState.GAME_QUIT;
}
}
把SceneController類在Unity中拖動到主場景的攝像機上面,這時選中攝像機,在Inspector
面板中會多出一個腳本組件:
上面這個變量是要爲菜單面板製做的貼圖背景,如今它仍是空的,
若是直接運行程序,會報一個警告。
因此找一張背景圖片導入到Assets文件夾,並把它拖動到裏面,這樣就能夠給背景附上值了。
運行項目,就會發現菜單界面製做成功了。