728x90
반응형

유니티 72

Enumeration, 열거,나열 [Unity]

바로 본론으로 들어가자. Enums은 보통 클래스를 정의할 때 클래스의 property 값을 정할 때 사용될 수 있다. 변수가 적절한 값을 갖게할 수 있고 숫자를 문자열로 나타낼 수 있다. public enum ePetType{ none, dog, cat, bird, fish, other } 이와 같이 그냥 나열하면 된다. 대부분 클래스 밖에서 정의된다. ** enum은 따로 선언되지 않으면 순서대로 값을 가진다. none = 0, dog = 1 ... 이런 식으로 public enum eLifeStage{ baby, teen, adult, senior, deceased } 이제 클래스에서 사용해볼까 물론 사용할 때 enum's type으로 사용하면 된다. 아래의 ePetType처럼 자료형을 저렇게 쓴다..

Static Method, 정적 메서드 선언 [Unity]

바로 설명 들어가자 정적 메서드는 우리가 일반적으로 사용하는 인스턴스(Instance) 메서드와는 다르게 클래스로부터 객체를 생성하는 방법으로 호출하는 것이 아니다. 직접 .으로 호출한다. ex) Mathf.Sin(....) ++ 우리가 클래스로 객체의 이름을 자유롭게 바꾸는 것과 다르게 얘는 클래스니까 바꿀 수 없다고 보면 된다. ** 메서드 내부에서는 클래스의 인스턴스 객체 멤버를 참조해서는 안된다. static인 변수나 전역(global)로 선언된 변수들만 사용이 가능하다. 보통 종속적이지 않게 구현하려고 쓰는 모양이다. 가독성을 높이기 위해 namespace와 class를 묶어서 사용하기 위해 쓰기도 한다고 한다. Mathf. 같은 메서드들이 그런 용도로 쓰이고 있다.

static과 static public 의 차이, 정적 변 [Unity]

조금 궁금한 주제였다. 근데 알아볼 기회가 생겨서 바로 알아봤다. 우선 우리는 Static은 정적선언이고 Stack 영역에 저장되어 프로그램이 내려가기 전까지 계속 있을 것이란 것을 알고 있다. 그렇다면 어차피 정적인데 아무데서나 public을 붙이나 마나 불러올 수 있는 것 아니냐??? 라는 의문이 든다. 사실 그렇지 않다. 구분하는 이유가 있었다. 접근제한자를 설정하지 않으면 자동으로 protected로 암묵적으로 선언된다. 즉, 자신을 포함한 Children만 사용이 가능해진다. static으로만 선언하면 다른 클래스에서는 불러올 수 없는 것이 된다는 것이다. 이것이 static 과 static public의 차이다. 아래 글도 참고하자. [Unity, 유니티/Basic, 기본] - Static M..

카메라 크기에 맞춰서 경계 설정하기, Boundary [Unity]

나는 슈팅게임을 하는데 필요했고 뭐 다른 이유로도 화면 밖의 것들을 지우고 싶을 때가 많을텐데 플레이어가 보는 카메라는 항상 존재하니까 그 크기에 맞춰서 짠다면 괜찮지 않을까? 이 스크립트를 어디에다도 쓸 수 있지 않을까??? 알아보자 **해당 카메라는 Orthogonal이어야 적용되도록 만들었다. 나는 이렇게 경계를 설정하려고 한다. 1. 카메라의 크기를 구한다. 2. 해당 오브젝트의 위치를 경계와 비교한다. 3. 경계에서 벗어나지 못하게 제약을 둔다. 변수들, variables [Header("Set in Inspector")] public float radius = 1f; public bool keepOnScreen = true; // this allow object to go through bou..

투사체 경로 흔적 남기기, ProjectileTrail [ Unity]

투사체에 Effect를 주거나 흔적을 남기고 싶을 때가 있다. 아니면 앵그리버드처럼 궤적을 남기거나 무슨 일을 하고싶을 때가 있다. 알아보자 우선 유니티에는 Trail Renderer라는 것이 내장되어있다. 그래서 단순히 이 렌더러를 붙여서 약간을 조작하는 것만으로도 Trail을 그릴 수 있다. 스크립트 없이도 단순히 해당 투사체에 렌더러를 붙여 조작하는 것만으로도 충분히 좋은 효과를 만들 수 있다. 뭐 이런 식으로 만들 수 있다. 이렇게 많은 Property들이 있어 가능하다. 모든 것을 살펴볼 필요는 없고 주요 기능을 보자면 Time: Trail을 몇 초 동안이나 유지할 것이냐? -> 값이 커지면 Trail이 Scene에 더 오래 남아있음 Width: Trail의 시간에 따른 넓이를 어떻게 할 것이냐..

마우스 입력 받아서 이용하는 4가지 방법[Unity]

마우스는 스크린에 있지만 이용하려면 WorldSpace로 변환하던가.. 무엇인가 해야하는 상황이 있다. 마우스 입력을 받아서 이용하는 방법에 대해 알아보자. 0 번째 방법 Input.mousePosition 얘는 그냥 Screen을 바로 출력해서 해상도가 1920 * 1080이면 오른쪽 위를 클릭하면 (1920,1080)을 반환한다. 본격적으로 첫 번째 방법 ScreenToWorldPoint( ) 이 방법은 2D게임이나 3D를 isometric으로 볼 때 많이 쓴다. ** 그 외적으로는 우리가 기대한만큼의 정확성을 기대하기 어렵다. 적어도 x,y를 우리가 스크린에서 조절할 수는 있지만 z에 대해선 마우스로 조절할 수 없는 영역이다. 우리가 저기서 Input.mousePosition에서는 z 성분을 얻을 ..

Invoke로 인한 문제점 [Unity]

오브젝트 풀링을 사용할 경우 미리 만들어놓고 끌어다 쓰는 경우다. 물론 비활성화되어있기에 스크립트가 단독으로 실행되는 경우는 없으나 나는.. 이것 때문에 2시간 날린듯... 영어로 구글링을 치고 한글로 검색한 끝에 원인을 찾았다. 바로 비활성화되었음에도 메서드가 실행되어서 Null이 뜨는 것... Debug.log(this)로 찾아냈지만 그 오브젝트가 실행되는 이유를 알 수 없었다. 아니.. Awake나 OnEnable로 잠깐 활성화된 시간이 있다해도 비활성화되면 꺼져야하는 것 아니냐??? 라고 생각했다. 하지만 아니었다. 활성화 또는 비활성화에 따라서 - OnEnable/OnDisable 이벤트 함수가 호출된다. - 게임 오브젝트가 비활성화되면 GameObject.Find 및 GameObject.Fin..

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

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

UI, 유저인터페이스 기본 - 4 Toggles, Sliders, Inputs, and Dropdowns [Unity]

그렇다고 인터페이스가 버튼만 있지는 않았으니.. 더 있다. 당연하게도 이렇게 더 있다. 토글, 슬라이더, 입력창, 체크박스 등등 알아보자 먼저 Input Field부터 알아보자 여기 씬에 Configuration Panel이 있다. 굳이 해석하자면.... 구성요소..라고나 할까?? 해석하기 어렵다. 아무튼 여기다 Input Field를 넣으려고 한다. 짠! 생겼다. 엥.. 버튼처럼 생겼네 혹시 child처럼 딸려오나?? 정답! Placeholder는 우리가 입력을 하고 있지 않을 때 보여지는 텍스트다. ++ 전화번호 ex) 000-0000-0000 이런식으로 입력해야 할 텍스트를 설명할 때 사용한다. 실제 값을 가지진 않는다. -> 입력하지 않는다고 해서 placeholder의 값인 000-0000-00..

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

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

728x90
반응형