UnityFactory_#03

Rio·2021년 8월 5일
0

Unity

목록 보기
4/6

🐱‍🚀유니티 Scene 전환

  • 그전에는 하나의 Scene에 SetActive를 이용해서 페이지를 구현하려고 했다...ㅎㅎㅎ
  • 위 방법에는 간단하게 구현은 가능하나 초기화나 다양한 에러가 발생한다
  • Scene별로 구현하면 Reload하면 초기 상태로 돌아가니 Scene 전환을 알아보자
  • SceneManagement
    SceneManager라는 빈 오브젝트를 생성해 스크립트를 추가한다
    BuildSetting에서 Scene 목록을 추가해줘야 전환 함수 실행이 가능하다

  • Scene을 다시 Load하면 화면이 어둡게 되는 현상이 발생
  • 그 해당 Scene의 Light 정보를 따로 저장해줘야한다
  • Scene 마다 각자 Light 파일을 저장을 해줘야한다 -> Scene별 폴더를 만들기
  • Window > Rendering -> Lighting 으로 들어간다
  • Lighting 창에서 Generate Lighting을 눌러 Scene의 Light 정보를 생성한다
  • 그럼 해당 Scene이 있는 곳에 Lighting 정보가 생성된다
  • 끝!

    Light 정보를 미리 추출하게 되면 Scene을 Load할 때 빛의 연산을 미리 저장한 baked를 사용하게 되어 연산을 줄일 수 있다.

✨ SingleTone_싱글톤

  • 말그대로 해당 스크립트의 객체가 전체에서 하나만 존재하게 만드는 방식

  • 예를 들어 게임을 개발하다보면 이런 기능이 필요하다

    • Game Manager
      -플래이어의 기록을 저장 및 갱신
      -게임의 상태 (Ready, Stop, Start)
      -Scene 전환
  • 위 기능은 많은 다른 클래스에서 필요로 하는 기능이다.

  • 필요로 하는 클래스마다 정의를 하게 되면 각자마다 다른 값들을 가지고 있어 상태관리가 어렵다

  • 이를 위해서 대표로 단 하나의 객체만을 만들어 그 객체에 접근해서 다른 클래스들이 참조하거나 값을 변경하게 해 상태를 공유하도록 만드는 것이 singleton의 원리이다.

  • 미리 자신 클래스를 객체로 가지고 있다는 것이 특징!!

  • 해당 스크립트를 가지고 있는 object를 onDestroy에 추가해주면 모든 Scene 전환시 쉽게 관리가 가능하다

  • 외부에서는 해당 클래스를 객체 생성하지 않고 "class명.객체.객체속성"으로 접근하면 된다.

public class GameScore{

     public static GameManager instance; // 자신 클래스 객체를 참고하기 위해 주소값을 저장
     
     int Score = 0;
     
     private void Awake() //instatnce가 static이기 때문에 Awake에서 주소값을 할당 해줘야한다
    {
    	if(instance == null){
        	instance = this;
	} else {
   		Destroy(this); //만약 이미 있다면(=새로 만들라고 하려면) 생성을 불가능하게 만들기
	}
    }
}


//player.cs에서 Score을 변화시키기
public class player{
	private void Start(){
    		GameScore.instance.Score = 10;
	}
}

👀Enum_열거형

  • 내가 원하는 자료형을 정의하는 것
  • 주의할 점은 enum을 저장할 변수가 public이면 enum 정의부도 public으로 설정해줘야한다.
  • 중간에 속성을 하나 추가하면 자동으로 해당 인덱스가 밀리게 된다
enum Game_State {
	Stop, //0
    	Ready, //1
    	Start //2
}

int state = Game_State.Stop;  //state = 0
if (state == Game_State.Ready){ print("Ready!!"); }

🎧 Easing_애니메이션 도구

  • 영상에서 FadeIn/Out이나 버튼 UI에서 애니메이션 등과 같은 기능을 구현할 때 사용된다.

  • Opacity나 Scale, Position의 값들을 변환시켜 애니메이션 효과를 구현하는 것

  • AssetStore에서 iTween을 다운받는다.

    iTween - Free Asset

  • 프로젝트에 Import

  • 문서를 참고하면서 해당 기능을 구현
    http://www.pixelplacement.com/itween/documentation.php

//easeOutBack 사용
iTween.ScaleTo(gameObject, iTween.Hash(
              "x", 2,
              "y", 2,
              "z", 2,
              "time", 0.5,
              "easetype", iTween.EaseType.easeOutBack
              ));
profile
우당탕탕 개발 기록지

0개의 댓글