| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 | 31 |
Tags
- c언어 콘서트 배열
- c sharp hello world
- 유니티
- c샾 헬로우 월드
- LUA
- c++ 등차수열 합
- 게임제작
- 루아다운로드
- C언어 달력
- 온라인 비주얼 스튜디오
- c샾 hello world
- Lua 설명
- Lua란
- Lua language
- N Queen 문제
- 비주얼 스튜디오
- 비주얼 스튜디오 다운로드
- for문
- 루아
- c#온라인
- c언어 배열 programming
- 2중 반복문
- N Queens Problem
- lua download
- lua 다운로드
- c언어 최대최소
- N Queen Coordinates
- 메이플스토리
- c언어 콘서트 배열 2번
- c언어 버블정렬
Archives
- Today
- Total
Ln Go
GameManager 본문
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.SceneManagement;
public class GameManager : MonoBehaviour
{
public GameObject menuCam;
public GameObject gameCam;
public Player player;
public Boss boss;
public GameObject itemShop;
public GameObject weaponShop;
public GameObject startZone;
public int stage;
public float playTime;
public bool isBattle;
public int enemyCntA;
public int enemyCntB;
public int enemyCntC;
public int enemyCntD;
public Transform[] enemyZones;
public GameObject[] enemies;
public List<int> enemyList;
public GameObject menuPanel;
public GameObject gamePanel;
public GameObject overPanel;
//What's mean Alignment 일직선, 정렬, 정돈
public Text maxScoreTxt;
public Text scoreTxt;
public Text stageTxt;
public Text playTimeTxt;
public Text playerHealthTxt;
public Text playerAmmoTxt;
public Text playerCoinTxt;
public Image weapon1Img;
public Image weapon2Img;
public Image weapon3Img;
public Image weaponRImg;
public Text enemyAtxt;
public Text enemyBtxt;
public Text enemyCtxt;
public RectTransform bossHealthGroup;
public RectTransform bossHealthBar;
public Text curScoreText;
public Text bestText;
void Awake()
{
enemyList = new List<int>();
//string.Format()
maxScoreTxt.text = string.Format("{0:n0}", PlayerPrefs.GetInt("MaxScore"));
if (PlayerPrefs.HasKey("MaxScore"))
{
PlayerPrefs.SetInt("MaxScore", 0);
}
}
public void GameStart()
{
menuCam.SetActive(false);
gameCam.SetActive(true);
menuPanel.SetActive(false);
gamePanel.SetActive(true);
player.gameObject.SetActive(true);
}
public void GameOver()
{
gamePanel.SetActive(false);
overPanel.SetActive(true);
curScoreText.text = scoreTxt.text;
int maxScore = PlayerPrefs.GetInt("MaxScore");
if (player.score > maxScore)
{
bestText.gameObject.SetActive(true);
PlayerPrefs.SetInt("MaxScore", player.score);
}
}
public void ReStart()
{
SceneManager.LoadScene(0);
}
public void StageStart()
{
//Object setactive on / off
itemShop.SetActive(false);
weaponShop.SetActive(false);
startZone.SetActive(false);
foreach (Transform zone in enemyZones)
zone.gameObject.SetActive(true);
isBattle = true;
StartCoroutine(InBattle());
}
public void StageEnd()
{
player.transform.position = Vector3.up * 0.8f;
itemShop.SetActive(true);
weaponShop.SetActive(true);
startZone.SetActive(true);
foreach (Transform zone in enemyZones)
zone.gameObject.SetActive(false);
isBattle = false;
stage++;
enemyCntA = 0;
enemyCntB = 0;
enemyCntC = 0;
}
IEnumerator InBattle()
{
if (stage % 5 == 0)
{
enemyCntD++;
GameObject instantEnemy = Instantiate(enemies[3], enemyZones[0].position, enemyZones[0].rotation);
Enemy enemy = instantEnemy.GetComponent<Enemy>();
enemy.target = player.transform;
enemy.manager = this;
boss = instantEnemy.GetComponent<Boss>();
}
else
{
for (int index = 0; index < stage; index++)
{
int ran = Random.Range(0, 3);
enemyList.Add(ran);
switch (ran)
{
case 0:
enemyCntA++;
break;
case 1:
enemyCntB++;
break;
case 2:
enemyCntC++;
break;
}
}
while (enemyList.Count > 0)
{
int ranZone = Random.Range(0, 4);
GameObject instantEnemy = Instantiate(enemies[enemyList[0]], enemyZones[ranZone].position, enemyZones[ranZone].rotation);
Enemy enemy = instantEnemy.GetComponent<Enemy>();
enemy.target = player.transform;
enemy.manager = this;
enemyList.RemoveAt(0);
yield return new WaitForSeconds(4f);
}
}
while ((enemyCntA + enemyCntB + enemyCntC + enemyCntD) > 0)
{
yield return null;
}
yield return new WaitForSeconds(4f);
boss = null;
StageEnd();
}
void Update()
{
if (isBattle)
playTime += Time.deltaTime;
}
void LateUpdate()
{
//상단 UI
//LateUpdate() : Update()가 끝난 후 호출되는 생명주기
scoreTxt.text = string.Format("{0:n0}", player.score);
stageTxt.text = "STAGE " + stage;
int hour = (int)(playTime / 3600);
int min = (int)((playTime - hour * 3600) / 60);
int second = (int)(playTime % 60);
playTimeTxt.text = string.Format("{0:00}", hour) + ":"
+ string.Format("{0:00}", min) + ":" + string.Format("{0:00}", second);
//플레이어 UI
playerHealthTxt.text = player.health + " / " + player.maxHealth;
playerCoinTxt.text = string.Format("{0:n0}", player.coin);
if (player.equipWeapon == null)
playerAmmoTxt.text = " - / " + player.ammo;
else if (player.equipWeapon.type == Weapon.Type.Melee)
playerAmmoTxt.text = " - / " + player.ammo;
else
playerAmmoTxt.text = player.equipWeapon.curAmmo + " / " + player.ammo;
//무기 UI
weapon1Img.color = new Color(1, 1, 1, player.hasWeapons[0] ? 1 : 0);
weapon2Img.color = new Color(1, 1, 1, player.hasWeapons[1] ? 1 : 0);
weapon3Img.color = new Color(1, 1, 1, player.hasWeapons[2] ? 1 : 0);
weaponRImg.color = new Color(1, 1, 1, (player.hasGrenades > 0) ? 1 : 0);
//몬스터 숫자 UI
enemyAtxt.text = enemyCntA.ToString();
enemyBtxt.text = enemyCntB.ToString();
enemyCtxt.text = enemyCntC.ToString();
if (boss != null)
{
bossHealthGroup.anchoredPosition = Vector3.down * 30;
bossHealthBar.localScale = new Vector3((float)boss.curHealth / boss.maxHealth, 1, 1);
}
else
{
bossHealthGroup.anchoredPosition = Vector3.up * 200;
}
}
}
'Unity > Quad Action' 카테고리의 다른 글
| BossMissile (0) | 2021.06.04 |
|---|---|
| BossRock (0) | 2021.06.04 |
| Boss (0) | 2021.06.04 |
| Enemy (0) | 2021.06.04 |
| Player (0) | 2021.06.04 |
Comments