728x90
반응형

unity 77

배경음악 설정하기, 볼륨 조절, 씬이동에도 지속하기 [Unity]

이 글에서 다룰 것은 2가지 씬 이동에도 배경음악이 흐르게 하기 배경음악 소리 조절하기 바로 들어가보자. 요약 게임이 시작하면 배경음악이 흐름 다른 씬으로 넘어가더라도 음악이 흐름 옵션에서 배경음악의 크기를 조절하게끔 하고 싶음 오디오 소스를 넣기 위해 오브젝트를 만든다. WIndow -> Audio 에서 Audio Mixer를 열어준다. Group에 Music이라는 다른 믹서를 만들어준다. (배경음악만 조절하기 위함) Music을 클릭하면 Inspector 창에 뜬다. 우클릭을 하여 expose를 해준다. 그다음 자기가 원하는 Parameter이름을 설정해준다. 지금까지 한 작업 볼륨믹서를 만들어 배경음악만 조절하기 위한 준비 볼륨믹서를 스크립트에서 조절하기 위한 준비 배경음악을 플레이해주는 오브젝트 ..

UI, 유저인터페이스 기본 - 3 Event trigger and Navigation [Unity]

텍스트, 이미지는 했는데 뭔가 UI에 동작이 없으면 안되잖아? 독서 어플리케이션도 아니고 그냥 보여주고 끝날건 아니잖아ㅎㅎ 그래서 알아보기로 했다. 이벤트 트리거들을 ㅎ 이벤트하면 무슨 버튼을 누르면 작동해야지?라는 생각이 먼저 든다. 그래서 버튼 알아보려고 한다. 사실 Interaction을 하기 위한 것이 UI라면 버튼이 차라리 대표적일 것 같은 느낌을 준다. 나만 그럴 수도 있고 아무튼 UI에서 버튼을 만들어보자 이렇게 항상 text가 child로 같이 딸려온다. text가 버튼의 이름이 되겠다. 버튼에는 또 Inspector창을 보면 옵션이 참 많다. Highlighted 는 마우스를 가져다 댔을 때 Pressed는 눌렀을 때 Normal은 그냥 냅뒀을 때 색도 이렇게 경우에 따라서 바꿀 수 있다..

UI, 유저인터페이스 기본 - 2 Text, Image, Responsive UI [Unity]

UI에 관한 기본적인 배경지식으로 이제 진짜 UI를 다뤄볼 것이다. 다룰 내용은..? 이 정도? 알아보자 먼저 텍스트와 스프라이트, 이미지부터 알아보자 UI 오브젝트 중 Text를 만들자. Text는 Inspector 창에서 글꼴, 크기, 스타일, 색, 배열 등 많은 것들을 바꿀 수 있다. 특히 여기서 Best Fit으로 최소 크기와 최대 크기를 정해주면 텍스트 사이즈에 따라 변화하게 만들 수 있다. -> 스크린에 따라 글자 크기를 바꿀 수 있다는 말이다. 글자에는 효과도 줄 수 있는데 대표적인 것이 Shodow, 그림자다. 다른 것도 Effect 컴포넌트에 가보면 있다. 그리고 만약 우리가 가지고 있는 Canvas 크기가 작아서 글씨가 선명하지 않고 계단현상, 안티앨리어싱 문제가 발생하면 이를 선명하게..

UI, 유저인터페이스 기본 - 1 [Unity]

인터페이스하면 그냥 사용자와 컴퓨터 간의 상호작용을 할 수 있다는 감이 온다. 이건 오랜 시간 게임에 몸을 담고 있다면 느껴지는 감이다. 자세히 알아보자 먼저 자주 쓰이는 용어를 정의해보자 UI와 HUD란 것이 있다. UI, User Interface 의 사전적의미는 사람과 컴퓨터같은 기계장치 간의 상호 작용을 하는 설계,design 를 말한다. 이 상호작용이 목적은 기계장치의 올바른 작동이나 효율적인 작동을 하기 위함이며 동시에 피드백을 줄 수 있어서 사용자의 의사 결정을 돕는다. HUD는 Head-Up Display로 게임 안에서 상태창, 점수와 같이 플레이어가 직접 건드리지는 못하지만 게임의 UI라고 볼 수 있는 것을 말한다. **우리가 점수를 얻을 수는 있어도 조작은 못하는 것처럼 그런데 UI가 ..

Handling Event, 이벤트 활용하기 - 3, 옵저버패턴, Observer Pattern [Unity]

우리가 왜 이벤트를 활용해보았을까. 바로 옵저버 패턴이란 것을 익혀보기 위함이었다. 옵저버 패턴은 어떤 때에 쓰일까?? 다수의 클래스가 하나의 이벤트에 대해 무엇인가 해야할 때 쓰인다. 이전 글에서 플레이어가 죽거나, 적이 죽을 때처럼 많은 곳에서 참조할 때?? 그정도? 알아보자 옵저버 패턴은 이런 식으로 진행된다. 하지만 모든 Observer마다 Notify를 하긴 귀찮기에 인터페이스를 이용하기도 한다. 이번에는 목숨이 다 소모되어서 게임이 끝났을 때를 가정해보자 게임 상에 남은 Enemy와 아이템은 없어지고 점수는 0으로 초기화되고 GAME OVER 문구가 떠야한다. 여기서 옵저버 패턴을 한 번 써보자. 그럼 인터페이스 만들어보자 이제는 Subject에 Private으로 Observer 리스트 만들고..

Handling Event, 이벤트 활용하기 - 2 [Unity]

이어서 이벤트를 활용해보자 이전 글과 이어진다. 이번에는 Enemy가 죽으면 해당하는 점수를 인터페이스 보여주려고 한다. 여기선 HUD, Head Up Display로 나타난다. 총알을 맞으면 어떻게 되는지 보자 private void OnCollisionEnter2D(Collision2D collision) { Destroy(collision.gameObject); GameObject xPlosion = Instantiate(explosion, transform.position, Quaternion.identity); xPlosion.transform.localScale = new Vector2(2, 2); Destroy(gameObject); } 이번에도 이벤트를 이용하고 싶다. 이번엔 이런 식으로 ..

Handling Event, 이벤트 활용하기 [Unity]

이벤트를 배워놓고 어디다 써먹는지 몰랐다. 이제 왜 이벤트를 써야하는지 알아 볼 차례다. 알아보자 문제 상황 플레이어가 총을 쏘는데 총알이 스크린을 벗어나거나 적에게 맞지 않는다면 총알을 쏠 수 없게 만들고 싶다. 즉, 총알을 쏘는 속도를 제어하고 싶다는 말이다. 그래서 생각해낸 생각이 아래와 같다. 플레이어 스크립트에서 Disable, 과 Enable로 총을 쏠 수 있게 하고 총알 자체에서 스크린 밖으로 벗어난 것을 감지하면 그것을 플레이어에게 알려줌으로 Scene에 활성화 된 총알을 하나만 만들려고 한다. 여기 플레이어의 스크립트가 있다. 그렇게 구현하고자 한다면 #region Projectile Management public void EnableProjectile() { projectileEnab..

이벤트, Events [Unity]

이벤트하면 뭐 경험치 2배, 선물 주는 것 생각이 나는 여기선 그건 아니고 정말 이벤트다. 사건이라고... 해석하기보다 그냥 Event로 받아들이자. 알아보자 정의해보자 어떤 이벤트가 일어났으면 설정해놓은 메서드를 불러와서 실행시킨다. delegate에 메서드를 담아서 실행시키는 것과 비슷한 원리다. 다만 Event는 static으로 선언되어 객체없이도 어디서나 접근할 수 있게해놓는 것이다. 그렇게 이용한다고 한다. public delegate void ClickAction(); public static event ClickAction OnClicked; 이런 식으로 선언한다. delegate으로 먼저 선언해준다. 그 후 event 키워드를 사용하여 메서드를 써준다. ** static으로 설정하지 않아도..

어트리뷰트, Attributes [Unity]

아.. 사실 속성이란 뜻인데 속성이라고 하면 property도 있어서 그냥 해석하지말고 영어 그대로를 받아들이는 것이 낫다. 알아보자 또 정의부터 하고 넘어가야겠지. 어트리뷰트란 어셈블리, 모듈, 클래스, 구조체, 열거형변수, 생성자, 메소드, 프로퍼티, 필드, 이벤트, 인터페이스, 파라미터, 반환값, 델리게이트 같은 프로그래밍 요소에 대해 메타정보를 포함 시킬수 있는 기능을 말한다. 어트리뷰트에는 아래와 같은 곳에 쓰인다. Conditional - 메서드 실행 관여 DllImport - 외부 DLL 사용 Obsolete - 메서드 설명 Transaction - 트랜잭션 관리 WebService - 웹서비스 관련 Serializable -- 클래스 직렬화 ??????? 감이 안오는데..??? 뭐야? 유니..

델리게이트, Delegates [Unity]

델리게이트?? 뭔가 했다. 아직도 뭔가 하는 것 같다. 알아보자 우선 정의해보자 Delagate는 도대체 뭐하는 앤가? delegate 해석하면 "대신 ~해준다" 정도로 해석된다. 뭘 대신해준다는 것일까? Container for similar functions (or methods)다. 다시말해서 메서드를 참조해준다. 우리는 변수를 선언해서 값을 담을 수 있지만 메서드를 담을 수 있는 변수는 없다. delegate는 메서드를 담아준다. delegate void firstdelegate(); firstdelegate = hello(); public void hello() { print("Hello!"); } hello라는 메서드를 firstdelegate가 참조한다. 어떻게 사용하느냐? 1. delega..

728x90
반응형