Light 정보를 미리 추출하게 되면 Scene을 Load할 때 빛의 연산을 미리 저장한 baked를 사용하게 되어 연산을 줄일 수 있다.
말그대로 해당 스크립트의 객체가 전체에서 하나만 존재하게 만드는 방식
예를 들어 게임을 개발하다보면 이런 기능이 필요하다
- 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 Game_State {
Stop, //0
Ready, //1
Start //2
}
int state = Game_State.Stop; //state = 0
if (state == Game_State.Ready){ print("Ready!!"); }
영상에서 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
));