유니티:맵: 두 판 사이의 차이

학교의 모든 지식. SMwiki
둘러보기로 이동 검색으로 이동
(새 문서: {{유니티}})
 
 
(같은 사용자의 중간 판 3개는 보이지 않습니다)
1번째 줄: 1번째 줄:
{{유니티}}
{{유니티}}
==개요==
플레이어가 다양한 곳을 이동하여 아예 화면 자체가 바뀌어야 할 때가 있다.(오픈월드가 아니라면)
===게임메니저===
게임 메니저 계층창에서 Create>Create Empty로 GameManager를 만든다. 이 안에 스크립트를 넣는다.
점수와 스테이지관리를 해준다.
==== 싱글턴 패턴 ====
게임 메니저는 일반적으로 프로그램에 하나만 존재하는 게 좋다. 관리기능이 여러군데에 산재해 있다면 어려움이 따를 것은 필연. 그리고 언제 어디서든 접근할 수 있어야 한다.
모든 오브젝트가 함께 공유하는 변수. 정적 변수를 활용한다. 이 변수는 오브젝트를 몇 개 생성하든 그 수에 상관없이 메모리에 하나만 있게 된다. <code>public static int 변수명 = 0;</code> 형태로 선언한다.(선언을 안하고 바로 변수명으로 쓸 수 있는듯.) 각자의 클래스 안에서 선언하면 해당 변수를 공유한다. 오브젝트 전체 갯수를 저장하거나 할 때 사용.
일반적으로 다음과 같은 방법으로 싱글턴 패턴을 만든다.<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=="레이어"){
gameManager.stagePoint += 가산할포인트
//포인트에 따라 달리 주기 위해
bool 변수명=collision.gameObject.name.Contains("아이템명") //아이템명이 포함되어 있으면 True 반환.
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 기준 최신판

틀:유니티

  1. 유니티:개요
  2. 유니티:기본 조작
    1. 유니티:에셋스토어
  3. 유니티:카메라
  4. 유니티:오브젝트
    1. 유니티:데이터 입력받기
    2. 유니티:오브젝트 이동(오브젝트 조작)
    3. 유니티:힘으로 오브젝트 이동
    4. 유니티:충돌 이벤트
    5. 유니티:오브젝트 작성 tip
    6. 유니티:프리팹
  5. 유니티:코딩기초
    1. 유니티:C sharp 코딩 편의기능
    2. 유니티:MonoBehaviour
    3. 유니티:이벤트 메서드
    4. 유니티:컴포넌트 조작하기
  6. 유니티:UI
  7. 유니티:게임 내 화면
  8. 유니티:플레이어
    1. 유니티:모델
    2. 유니티:캐릭터 이동
    3. 유니티:애니메이션
    4. 유니티:주인공 시점
  9. 유니티:맵
    1. 유니티:투명한 벽 만들기
    2. 유니티:내비게이션
  10. 유니티:씬
  11. 유니티:몬스터
  12. 유니티:아이템
  13. 유니티:음향
    1. 유니티:배경음
    2. 유니티:효과음
  14. 유니티:빌드
  15. 유니티:VR
    1. 유니티:VR:UI
    2. 유니티:VR:VR로 변환
  16. 유니티:팁

개요[편집 | 원본 편집]

플레이어가 다양한 곳을 이동하여 아예 화면 자체가 바뀌어야 할 때가 있다.(오픈월드가 아니라면)

게임메니저[편집 | 원본 편집]

게임 메니저 계층창에서 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{//게임 클리어.
    }