GameState
How do I use Game State
Below are practical examples compiled from projects for learning and reference purposes
Featured Snippets
File name: Result.cs
Copy
41 private void OnGameResult(Game game)
42 {
43 switch (game.CurrentState)
44 {
45 case GameState.CrossWin:
46 label.text = "X WIN!";
47 break;
48 case GameState.NoughtWin:
49 label.text = "O WIN!";
50 break;
51 case GameState.Draw:
52 label.text = "DRAW!";
53 break;
54 }
55
56 Show();
57 }
File name: Game.cs
Copy
28 public void PlayOnline()
29 {
30 CurrentState = GameState.Lobby;
31 NetworkService.Connect();
32 }
File name: Game.cs
Copy
40 public void NewGame()
41 {
42 board.gameObject.SetActive(true);
43 board.Clear();
44 board.SetPlayer(Seed.Cross);
45 CurrentState = GameState.Playing;
46
47 if (NetworkService.IsConnected)
48 {
49 if (NetworkService.IsMaster)
50 {
51 Player1.Name = NetworkService.PlayerName;
52 Player2.Name = NetworkService.OpponentName;
53
54 Player1.Type = Seed.Cross;
55 Player2.Type = Seed.Nought;
56 board.SetPlayer(Seed.Cross);
57
58 NetworkService.SendNewGameStarted();
59 }
60 else
61 {
62 Player1.Name = NetworkService.OpponentName;
63 Player2.Name = NetworkService.PlayerName;
64
65 Player1.Type = Seed.Nought;
66 Player2.Type = Seed.Cross;
67 board.SetPlayer(Seed.Empty);
68 }
69 }
70
71 OnGameStartSignal.Dispatch(this);
72 }
File name: Game.cs
Copy
74 public void Quit()
75 {
76 CurrentState = GameState.MainMenu;
77 HideBoard();
78 OnGameQuitSignal.Dispatch();
79
80 if (NetworkService.IsConnected)
81 {
82 NetworkService.Disconnect();
83 }
84 }
File name: Game.cs
Copy
97 protected override void Start()
98 {
99 base.Start();
100
101 Reset();
102
103 CurrentState = GameState.MainMenu;
104
105 board.Init(OnBoardChange);
106 board.SetPlayer(Seed.Empty);
107 board.gameObject.SetActive(false);
108
109 NetworkService.OnAllPlayersConnectedSignal.AddListener(OnAllPlayersConnected);
110 NetworkService.OnDisconnectedFromMasterSignal.AddListener(OnDisconnectedFromMaster);
111 NetworkService.OnRemoteBoardChangeSignal.AddListener(OnRemoteBoardChange);
112 }
File name: Game.cs
Copy
125 protected override void Update()
126 {
127 base.Update();
128
129 if (Input.GetKeyDown(KeyCode.Escape))
130 {
131 if (CurrentState == GameState.MainMenu)
132 {
133 Application.Quit();
134 }
135 else
136 {
137 Quit();
138 }
139 }
140 }
File name: Game.cs
Copy
169 private void OnBoardChange(Seed player, int row, int col)
170 {
171 Seed nextPlayer = Seed.Empty;
172
173 if (board.HasWon(player))
174 {
175 switch (player)
176 {
177 case Seed.Cross:
178 CurrentState = GameState.CrossWin;
179 Player1.Score++;
180 break;
181 case Seed.Nought:
182 CurrentState = GameState.NoughtWin;
183 Player2.Score++;
184 break;
185 }
186
187 OnGameResultSignal.Dispatch(this);
188 }
189 else if (board.IsDraw())
190 {
191 CurrentState = GameState.Draw;
192 OnGameResultSignal.Dispatch(this);
193 }
194 else
195 {
196 nextPlayer = player == Seed.Cross ? Seed.Nought : Seed.Cross;
197 }
198
199 board.SetPlayer(nextPlayer);
200
201 if (NetworkService.IsConnected && player == Player1.Type)
202 {
203 board.SetPlayer(Seed.Empty);
204 NetworkService.SendBoardChange(player, row, col);
205 }
206 }
Download file with original file name:GameState
GameState 129 lượt xem
Gõ tìm kiếm nhanh...