유니티:맵: 두 판 사이의 차이
잔글편집 요약 없음 |
(→개요) |
||
(같은 사용자의 중간 판 2개는 보이지 않습니다) | |||
1번째 줄: | 1번째 줄: | ||
{{유니티}} | {{유니티}} | ||
== 개요 == | ==개요== | ||
플레이어가 다양한 곳을 이동하여 아예 화면 자체가 바뀌어야 할 때가 있다.(오픈월드가 아니라면) | 플레이어가 다양한 곳을 이동하여 아예 화면 자체가 바뀌어야 할 때가 있다.(오픈월드가 아니라면) | ||
=== 게임메니저 === | ===게임메니저=== | ||
게임 메니저 계층창에서 GameManager를 만든다. 이 안에 스크립트를 넣는다. | 게임 메니저 계층창에서 Create>Create Empty로 GameManager를 만든다. 이 안에 스크립트를 넣는다. | ||
점수와 스테이지관리를 해준다. | 점수와 스테이지관리를 해준다. | ||
== | ==== 싱글턴 패턴 ==== | ||
게임 메니저는 일반적으로 프로그램에 하나만 존재하는 게 좋다. 관리기능이 여러군데에 산재해 있다면 어려움이 따를 것은 필연. 그리고 언제 어디서든 접근할 수 있어야 한다. | |||
=== 플레이어의 코드 === | 모든 오브젝트가 함께 공유하는 변수. 정적 변수를 활용한다. 이 변수는 오브젝트를 몇 개 생성하든 그 수에 상관없이 메모리에 하나만 있게 된다. <code>public static int 변수명 = 0;</code> 형태로 선언한다.(선언을 안하고 바로 변수명으로 쓸 수 있는듯.) 각자의 클래스 안에서 선언하면 해당 변수를 공유한다. 오브젝트 전체 갯수를 저장하거나 할 때 사용. | ||
public GameManager gameManager; | |||
일반적으로 다음과 같은 방법으로 싱글턴 패턴을 만든다.<syntaxhighlight lang="c#"> | |||
using UnityEngine; | |||
using UnityEngine.SceneManagement; | |||
using UnityEngine.UI; | |||
public class GameManager : MonoBehaviour { | |||
public static GameManager instance; // 싱글턴을 담을 정적 변수 | |||
} | |||
void Awake() { // 게임을 시작하자마자 구성할 것. | |||
instance = this; // 해당 객체를 instance에 할당한다. | |||
} | |||
</syntaxhighlight>다른 코드에서도 public static GameManager instance;를 이용하여 게임메니저에 접근할 수 있다. | |||
다른 코드에서도 정의할 필요 없이 GameManager.instance를 이용하여 게임메니저 인스턴스에 접근할 수 있다. | |||
==점수가산== | |||
===플레이어의 코드=== | |||
public GameManager gameManager; //게임의 상태를 지정한다. | |||
if(collision.gameObject.tag=="레이어"){ | if(collision.gameObject.tag=="레이어"){ | ||
23번째 줄: | 44번째 줄: | ||
if(변수명){포인트가산명령} | if(변수명){포인트가산명령} | ||
//게임메니저가 스테이지 이동도 관리한다. | |||
<br /> | |||
===맵=== | |||
계층에서.. 각종 맵을 추가한다.<syntaxhighlight lang="c#"> | |||
public void NextStage()//다음 맵으로. | |||
{ | |||
if(stageIndex <Stages.Lenth-1)//인덱스가 전체 스테이지보다 낮을 때. | |||
{ | |||
Stages[stageIndex].SetActive(false);//기존 스테이지를 지운다. | |||
stageIndex++;//인덱스를 하나 늘린다. | |||
Stages[stageIndex].SetActive(true);//다음 스테이지 활성화. | |||
} | |||
else{//게임 클리어. | |||
} | |||
</syntaxhighlight> |
2021년 8월 13일 (금) 21:21 기준 최신판
- 유니티:개요
- 유니티:기본 조작
- 유니티:카메라
- 유니티:오브젝트
- 유니티:코딩기초
- 유니티:UI
- 유니티:게임 내 화면
- 유니티:플레이어
- 유니티:맵
- 유니티:씬
- 유니티:몬스터
- 유니티:아이템
- 유니티:음향
- 유니티:빌드
- 유니티:VR
- 유니티:팁
개요[편집 | 원본 편집]
플레이어가 다양한 곳을 이동하여 아예 화면 자체가 바뀌어야 할 때가 있다.(오픈월드가 아니라면)
게임메니저[편집 | 원본 편집]
게임 메니저 계층창에서 Create>Create Empty로 GameManager를 만든다. 이 안에 스크립트를 넣는다.
점수와 스테이지관리를 해준다.
싱글턴 패턴[편집 | 원본 편집]
게임 메니저는 일반적으로 프로그램에 하나만 존재하는 게 좋다. 관리기능이 여러군데에 산재해 있다면 어려움이 따를 것은 필연. 그리고 언제 어디서든 접근할 수 있어야 한다.
모든 오브젝트가 함께 공유하는 변수. 정적 변수를 활용한다. 이 변수는 오브젝트를 몇 개 생성하든 그 수에 상관없이 메모리에 하나만 있게 된다. public static int 변수명 = 0;
형태로 선언한다.(선언을 안하고 바로 변수명으로 쓸 수 있는듯.) 각자의 클래스 안에서 선언하면 해당 변수를 공유한다. 오브젝트 전체 갯수를 저장하거나 할 때 사용.
일반적으로 다음과 같은 방법으로 싱글턴 패턴을 만든다.
using UnityEngine;
using UnityEngine.SceneManagement;
using UnityEngine.UI;
public class GameManager : MonoBehaviour {
public static GameManager instance; // 싱글턴을 담을 정적 변수
}
void Awake() { // 게임을 시작하자마자 구성할 것.
instance = this; // 해당 객체를 instance에 할당한다.
}
다른 코드에서도 public static GameManager instance;를 이용하여 게임메니저에 접근할 수 있다.
다른 코드에서도 정의할 필요 없이 GameManager.instance를 이용하여 게임메니저 인스턴스에 접근할 수 있다.
점수가산[편집 | 원본 편집]
플레이어의 코드[편집 | 원본 편집]
public GameManager gameManager; //게임의 상태를 지정한다.
if(collision.gameObject.tag=="레이어"){
gameManager.stagePoint += 가산할포인트
//포인트에 따라 달리 주기 위해
bool 변수명=collision.gameObject.name.Contains("아이템명") //아이템명이 포함되어 있으면 True 반환.
if(변수명){포인트가산명령}
//게임메니저가 스테이지 이동도 관리한다.
맵[편집 | 원본 편집]
계층에서.. 각종 맵을 추가한다.
public void NextStage()//다음 맵으로.
{
if(stageIndex <Stages.Lenth-1)//인덱스가 전체 스테이지보다 낮을 때.
{
Stages[stageIndex].SetActive(false);//기존 스테이지를 지운다.
stageIndex++;//인덱스를 하나 늘린다.
Stages[stageIndex].SetActive(true);//다음 스테이지 활성화.
}
else{//게임 클리어.
}